105 lines
2.9 KiB
C#
105 lines
2.9 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
using UnityEngine.SceneManagement;
|
|||
|
|
using System.Collections;
|
|||
|
|
|
|||
|
|
public class PortalController : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
[Header("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI<55><49>")]
|
|||
|
|
public CanvasGroup fKeyCanvasGroup; // FŰ<46><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public Image fadeImage; // <20><><EFBFBD><EFBFBD> <20>г<EFBFBD>
|
|||
|
|
public Text loadingText; // <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
[Header("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|||
|
|
public string nextSceneName = "Stage1"; // <20>̵<EFBFBD><CCB5><EFBFBD> <20><> <20≯<EFBFBD>
|
|||
|
|
public float fadeSpeed = 1.0f; // <20><><EFBFBD>̵<EFBFBD> <20>ӵ<EFBFBD>
|
|||
|
|
|
|||
|
|
private bool isPlayerNearby = false;
|
|||
|
|
private bool isLoadingStarted = false;
|
|||
|
|
|
|||
|
|
void Start()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
|
fKeyCanvasGroup.alpha = 0;
|
|||
|
|
fadeImage.color = new Color(0, 0, 0, 0);
|
|||
|
|
loadingText.color = new Color(1, 1, 1, 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>÷<EFBFBD><C3B7>̾ <20><>ó<EFBFBD><C3B3> <20><><EFBFBD><EFBFBD> FŰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
|
|||
|
|
private void OnTriggerEnter(Collider other)
|
|||
|
|
{
|
|||
|
|
if (other.CompareTag("Player") && !isLoadingStarted)
|
|||
|
|
{
|
|||
|
|
isPlayerNearby = true;
|
|||
|
|
StopAllCoroutines();
|
|||
|
|
StartCoroutine(FadeUI(fKeyCanvasGroup, 1f, 0.5f));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>÷<EFBFBD><C3B7>̾ <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> FŰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
private void OnTriggerExit(Collider other)
|
|||
|
|
{
|
|||
|
|
if (other.CompareTag("Player"))
|
|||
|
|
{
|
|||
|
|
isPlayerNearby = false;
|
|||
|
|
StopAllCoroutines();
|
|||
|
|
StartCoroutine(FadeUI(fKeyCanvasGroup, 0f, 0.5f));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Update()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|||
|
|
if (isPlayerNearby && Input.GetKeyDown(KeyCode.F) && !isLoadingStarted)
|
|||
|
|
{
|
|||
|
|
StartCoroutine(TransitionSequence());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ȭ<><C8AD> <20><><EFBFBD><EFBFBD> -> <20>ε<EFBFBD> -> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
IEnumerator TransitionSequence()
|
|||
|
|
{
|
|||
|
|
isLoadingStarted = true;
|
|||
|
|
|
|||
|
|
// 1. FŰ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
yield return StartCoroutine(FadeUI(fKeyCanvasGroup, 0f, 0.3f));
|
|||
|
|
|
|||
|
|
// 2. ȭ<><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>˰<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>̵<EFBFBD> <20>ƿ<EFBFBD>)
|
|||
|
|
float timer = 0;
|
|||
|
|
while (timer < 1f)
|
|||
|
|
{
|
|||
|
|
timer += Time.deltaTime * fadeSpeed;
|
|||
|
|
fadeImage.color = new Color(0, 0, 0, timer);
|
|||
|
|
yield return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 3. <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8>
|
|||
|
|
timer = 0;
|
|||
|
|
while (timer < 1f)
|
|||
|
|
{
|
|||
|
|
timer += Time.deltaTime * 2f;
|
|||
|
|
loadingText.color = new Color(1, 1, 1, timer);
|
|||
|
|
yield return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 4. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ε<EFBFBD><CEB5>ϴ<EFBFBD> ô!)
|
|||
|
|
yield return new WaitForSeconds(1.5f);
|
|||
|
|
|
|||
|
|
// 5. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>!
|
|||
|
|
SceneManager.LoadScene(nextSceneName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// UI<55><49> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε巴<CEB5><E5B7B4> <20>ٲ<EFBFBD><D9B2>ִ<EFBFBD> <20><>ƿ<EFBFBD><C6BF>Ƽ <20>ڷ<EFBFBD>ƾ
|
|||
|
|
IEnumerator FadeUI(CanvasGroup cg, float targetAlpha, float duration)
|
|||
|
|
{
|
|||
|
|
float startAlpha = cg.alpha;
|
|||
|
|
float time = 0;
|
|||
|
|
while (time < duration)
|
|||
|
|
{
|
|||
|
|
time += Time.deltaTime;
|
|||
|
|
cg.alpha = Mathf.Lerp(startAlpha, targetAlpha, time / duration);
|
|||
|
|
yield return null;
|
|||
|
|
}
|
|||
|
|
cg.alpha = targetAlpha;
|
|||
|
|
}
|
|||
|
|
}
|