설정수정
This commit is contained in:
@@ -34,6 +34,42 @@ public void SetZone(Zone zone)
|
||||
|
||||
public void OnSceneLoaded()
|
||||
{
|
||||
ResolveZoneAtSpawn();
|
||||
}
|
||||
|
||||
//씬 로드 직후, 플레이어가 서 있는 위치에서 ZoneTrigger를 직접 조회해 구역을 확정한다.
|
||||
//None을 깔고 OnTriggerEnter를 기다리는 방식의 BGM 글리치/누락(스폰 즉시 트리거 안인 경우)을 피하기 위함.
|
||||
private void ResolveZoneAtSpawn()
|
||||
{
|
||||
Zone resolved = Zone.None;
|
||||
|
||||
var player = GameObject.FindGameObjectWithTag("Player");
|
||||
if (player != null)
|
||||
{
|
||||
//콜라이더는 Awake/OnEnable에서 이미 물리씬에 등록되므로 첫 물리 스텝 전에도 즉시 조회 가능
|
||||
Collider[] hits = Physics.OverlapSphere(
|
||||
player.transform.position, 0.1f, ~0, QueryTriggerInteraction.Collide);
|
||||
|
||||
foreach (var hit in hits)
|
||||
{
|
||||
if (hit.TryGetComponent<ZoneTrigger>(out var trigger))
|
||||
{
|
||||
resolved = trigger.Zone;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetZone(resolved); //이전 구역과 같으면 dedup되어 BGM이 끊김 없이 이어진다
|
||||
}
|
||||
|
||||
//게임 종료 (에디터에서는 플레이 모드 중지, 빌드에서는 앱 종료)
|
||||
public void QuitGame()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
UnityEditor.EditorApplication.isPlaying = false;
|
||||
#else
|
||||
Application.Quit();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user