using UnityEngine; public class DoorController : MonoBehaviour { [Header("Çʼö ¿¬°á")] public Transform player; public GameObject interactionCanvas; // World Space ĵ¹ö½º [Header("¼³Á¤")] public string targetSceneName = "NextMap"; // À̵¿ÇÒ ¾À À̸§ public float interactDistance = 4f; public Vector3 worldOffset = new Vector3(0, 1.2f, 0); // ¹® Áß¾Ó ³ôÀÌ·Î Á¶Á¤ [Header("¿¬Ãâ ¼³Á¤")] public float fadeSpeed = 5f; public float floatSpeed = 2f; public float floatAmplitude = 0.1f; private CanvasGroup canvasGroup; private float currentAlpha = 0f; private Transform mainCamTransform; void Start() { mainCamTransform = Camera.main.transform; canvasGroup = interactionCanvas.GetComponent(); if (canvasGroup == null) canvasGroup = interactionCanvas.AddComponent(); canvasGroup.alpha = 0; } void Update() { if (player == null || interactionCanvas == null) return; 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) { // ºôº¸µå: Ç×»ó Ä«¸Þ¶ó¸¦ ¹Ù¶óº½ interactionCanvas.transform.forward = mainCamTransform.forward; // µÕµÕ ¶ß´Â È¿°ú float yOffset = Mathf.Sin(Time.time * floatSpeed) * floatAmplitude; interactionCanvas.transform.position = transform.position + worldOffset + new Vector3(0, yOffset, 0); // FŰ ÀÔ·Â ½Ã ÆäÀÌµå ·Îµù ½ÃÀÛ if (targetAlpha > 0.5f && Input.GetKeyDown(KeyCode.F)) { SceneLoader.Instance.LoadSceneWithFade(targetSceneName); interactionCanvas.SetActive(false); // ·Îµù ½ÃÀÛ ½Ã ¾ÆÀÌÄÜ ¼û±è } } } }