Enemy의 사망 애니메이션 로직

네트워크 상에서의 동작 확인 완료
This commit is contained in:
2026-02-16 00:13:25 +09:00
parent 17457b2e7e
commit 047c115f95
6 changed files with 89 additions and 6 deletions

View File

@@ -119,9 +119,24 @@ namespace Northbound
{
TransitionToState(EnemyAIState.Idle);
}
// 사망 이벤트 구독
if (_enemyUnit != null)
{
_enemyUnit.OnDeath += HandleDeath;
}
}
}
public override void OnNetworkDespawn()
{
if (_enemyUnit != null)
{
_enemyUnit.OnDeath -= HandleDeath;
}
base.OnNetworkDespawn();
}
private void Update()
{
if (!IsServer) return;
@@ -134,6 +149,7 @@ namespace Northbound
case EnemyAIState.ChasePlayer: UpdateChasePlayer(); break;
case EnemyAIState.Attack: UpdateAttack(); break;
case EnemyAIState.ReturnToOrigin: UpdateReturnToOrigin(); break;
case EnemyAIState.Dead: break; // 사망 상태에서는 아무것도 하지 않음
}
}
@@ -471,11 +487,28 @@ namespace Northbound
if (state == EnemyAIState.ChasePlayer) _chaseStartPosition = transform.position;
if (state == EnemyAIState.ReturnToOrigin) _agent.SetDestination(_originPosition);
break;
case EnemyAIState.Dead:
_agent.isStopped = true;
_agent.ResetPath();
_agent.enabled = false; // NavMeshAgent 비활성화
break;
}
}
private void OnExitState(EnemyAIState state) { }
private void HandleDeath(ulong killerId)
{
if (!IsServer) return;
// 사망 상태로 전환
TransitionToState(EnemyAIState.Dead);
ClearTargetPlayer();
if (showDebugInfo)
Debug.Log($"<color=red>[EnemyAI] {gameObject.name}이(가) 사망했습니다. (killer: {killerId})</color>");
}
private void OnLostTarget()
{
ClearTargetPlayer();