Files

51 lines
2.1 KiB
C#

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<Collider2D>();
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<Player>();
if (player != null)
{
Debug.Log($"[Transition] 플레이어 '{player.CharacterName}'가 우측 경계 성벽에 접촉했습니다.");
// 1. 싱글톤 GameManager 인스턴스가 존재할 경우 현재 플레이어의 정보(이름, 세대, HP)를 세이브합니다.
if (GameManager.Instance != null)
{
GameManager.Instance.SavePlayerData(player);
}
else
{
Debug.LogWarning("[Transition] 씬에 GameManager 싱글톤 오브젝트가 존재하지 않아 플레이어 정보 임시 세이브를 스킵합니다.");
}
// 성벽 통과/씬 전환 효과음 재생
if (SoundManager.Instance != null)
{
SoundManager.Instance.PlayTransition();
}
// 2. 유니티 씬 매니저를 통해 목표 씬(battleStage)을 즉시 로드합니다.
Debug.Log($"[Transition] {targetSceneName} 씬으로 화면을 전환합니다.");
SceneManager.LoadScene(targetSceneName);
}
}
}