using UnityEngine; using UnityEngine.SceneManagement; [RequireComponent(typeof(Collider2D))] // 트리거 판정을 위해 Collider2D가 부착되어 있어야 합니다. public class WallTransition : MonoBehaviour { [Header("전환될 목표 씬 이름")] [SerializeField] private string targetSceneName = "battleStage"; private void Start() { // 물리적인 밀어냄 현상을 방지하고 통과 감지만 할 수 있도록 트리거(Trigger)로 지정합니다. Collider2D col = GetComponent(); if (col != null && !col.isTrigger) { col.isTrigger = true; Debug.LogWarning($"[Transition] {gameObject.name}에 부착된 Collider2D를 트리거(Is Trigger = true)로 자동 갱신했습니다."); } } private void OnTriggerEnter2D(Collider2D other) { // 닿은 물체가 플레이어 캐릭터인지 확인합니다. Player player = other.GetComponent(); if (player != null) { Debug.Log($"[Transition] 플레이어 '{player.CharacterName}'가 우측 경계 성벽에 접촉했습니다."); // 1. 싱글톤 GameManager 인스턴스가 존재할 경우 현재 플레이어의 정보(이름, 세대, HP)를 세이브합니다. if (GameManager.Instance != null) { GameManager.Instance.SavePlayerData(player); } else { Debug.LogWarning("[Transition] 씬에 GameManager 싱글톤 오브젝트가 존재하지 않아 플레이어 정보 임시 세이브를 스킵합니다."); } // 2. 유니티 씬 매니저를 통해 목표 씬(battleStage)을 즉시 로드합니다. Debug.Log($"[Transition] {targetSceneName} 씬으로 화면을 전환합니다."); SceneManager.LoadScene(targetSceneName); } } }