using UnityEngine; public class DoorController : MonoBehaviour { [Header("Çʼö ¿¬°á")] public Transform player; public GameObject interactionCanvas; [Header("¼³Á¤")] public string targetSceneName = "NextMap"; public float interactDistance = 2f; [Header("¿¬Ãâ ¼³Á¤")] public float fadeSpeed = 5f; public float floatSpeed = 2f; public float floatAmplitude = 0.2f; private CanvasGroup canvasGroup; private float currentAlpha = 0f; private Vector3 initialLocalPosition; void Start() { // 1. ÀνºÆåÅÍ¿¡¼­ ¼³Á¤ÇÑ UIÀÇ Ãʱâ À§Ä¡¸¦ ±â¾ïÇÕ´Ï´Ù. if (interactionCanvas != null) { initialLocalPosition = interactionCanvas.transform.localPosition; canvasGroup = interactionCanvas.GetComponent(); if (canvasGroup == null) canvasGroup = interactionCanvas.AddComponent(); canvasGroup.alpha = 0; } } void Update() { if (player == null || interactionCanvas == null) return; // 2. °Å¸® üũ ¹× ¾ËÆÄ(Åõ¸íµµ) Á¶Àý float distance = Vector3.Distance(player.position, transform.position); float targetAlpha = (distance <= interactDistance) ? 1f : 0f; currentAlpha = Mathf.MoveTowards(currentAlpha, targetAlpha, Time.deltaTime * fadeSpeed); canvasGroup.alpha = currentAlpha; if (currentAlpha > 0.01f) { // 3. [ÇÙ½É] ÀνºÆåÅÍ À§Ä¡¸¦ ±âÁØÀ¸·Î »óÇÏ Èçµé¸² È¿°ú¸¸ ÁÝ´Ï´Ù. // transform.positionÀ» °­Á¦·Î °íÁ¤ÇÏÁö ¾Ê°í localPositionÀ» »ç¿ëÇÕ´Ï´Ù. float yOffset = Mathf.Sin(Time.time * floatSpeed) * floatAmplitude; interactionCanvas.transform.localPosition = initialLocalPosition + new Vector3(0, yOffset, 0); // 4. ÀԷ üũ if (targetAlpha > 0.5f && Input.GetKeyDown(KeyCode.F)) { Debug.Log(targetSceneName + " (À¸)·Î À̵¿ ½Ãµµ"); // SceneLoader.Instance.LoadSceneWithFade(targetSceneName); } } } }