Enemy의 사망 애니메이션 로직
네트워크 상에서의 동작 확인 완료
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user