컴퓨터 설정까지
This commit is contained in:
84
Assets/02_Scripts/Story/ch4 scrip/JunpyoRescueEvent.cs
Normal file
84
Assets/02_Scripts/Story/ch4 scrip/JunpyoRescueEvent.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
public class JunpyoRescueEvent : MonoBehaviour
|
||||
{
|
||||
[Header("Event Components")]
|
||||
[SerializeField] private JunpyoRunToPoint junpyoRun;
|
||||
[SerializeField] private PlayerPushToPoint playerPush;
|
||||
[SerializeField] private SpotlightFall spotlightFall;
|
||||
|
||||
[Header("Timing")]
|
||||
[Tooltip("구준표가 출발한 뒤 플레이어를 밀 때까지 시간")]
|
||||
[SerializeField] private float pushDelay = 1.0f;
|
||||
|
||||
[Tooltip("플레이어를 민 뒤 조명이 떨어질 때까지 시간")]
|
||||
[SerializeField] private float spotlightDelayAfterPush = 0.1f;
|
||||
|
||||
private bool hasPlayed;
|
||||
|
||||
public void PlayRescueEvent()
|
||||
{
|
||||
if (hasPlayed)
|
||||
return;
|
||||
|
||||
if (junpyoRun == null ||
|
||||
playerPush == null ||
|
||||
spotlightFall == null)
|
||||
{
|
||||
Debug.LogWarning(
|
||||
"[JunpyoRescueEvent] 연결되지 않은 컴포넌트가 있습니다."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
hasPlayed = true;
|
||||
StartCoroutine(RescueRoutine());
|
||||
}
|
||||
|
||||
private IEnumerator RescueRoutine()
|
||||
{
|
||||
// 1. 구준표가 달려오기 시작
|
||||
junpyoRun.RunToStopPoint();
|
||||
|
||||
// 2. 구준표가 거의 도착할 때까지 대기
|
||||
yield return new WaitForSeconds(pushDelay);
|
||||
|
||||
// 3. 플레이어 밀기
|
||||
playerPush.PushPlayerOnce();
|
||||
|
||||
// 4. 밀린 직후 잠깐 기다림
|
||||
yield return new WaitForSeconds(spotlightDelayAfterPush);
|
||||
|
||||
// 5. 조명 떨어뜨리기
|
||||
spotlightFall.DropSpotlight();
|
||||
}
|
||||
|
||||
public void ResetEvent()
|
||||
{
|
||||
StopAllCoroutines();
|
||||
|
||||
hasPlayed = false;
|
||||
|
||||
if (junpyoRun != null)
|
||||
junpyoRun.ResetMovement();
|
||||
|
||||
if (playerPush != null)
|
||||
playerPush.ResetPush();
|
||||
|
||||
if (spotlightFall != null)
|
||||
spotlightFall.ResetFall();
|
||||
}
|
||||
|
||||
[ContextMenu("Test Rescue Event")]
|
||||
private void TestRescueEvent()
|
||||
{
|
||||
PlayRescueEvent();
|
||||
}
|
||||
|
||||
[ContextMenu("Reset Rescue Event")]
|
||||
private void TestResetEvent()
|
||||
{
|
||||
ResetEvent();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user