feat: 적 사망 처리 시스템 개선
- EnemyBase: PlayDeathAnimationRpc로 모든 클라이언트에 사망 애니메이션 동기화 - EnemyAnimationController: 사망 상태에서 애니메이션 업데이트 및 트리거 중단 - BossEnemy: HandleDeath에서 AI 정지 순서 개선 (enabled=false 먼저) Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -20,6 +20,7 @@ namespace Colosseum.Enemy
|
||||
|
||||
private Animator animator;
|
||||
private UnityEngine.AI.NavMeshAgent navMeshAgent;
|
||||
private EnemyBase enemyBase;
|
||||
private float currentSpeed;
|
||||
private float speedVelocity;
|
||||
|
||||
@@ -27,6 +28,7 @@ namespace Colosseum.Enemy
|
||||
{
|
||||
animator = GetComponent<Animator>();
|
||||
navMeshAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
|
||||
enemyBase = GetComponent<EnemyBase>();
|
||||
}
|
||||
|
||||
public override void OnNetworkSpawn()
|
||||
@@ -49,6 +51,10 @@ namespace Colosseum.Enemy
|
||||
/// </summary>
|
||||
private void UpdateAnimationParameters()
|
||||
{
|
||||
// 사망 상태에서는 애니메이션 파라미터 업데이트 중단
|
||||
if (enemyBase != null && enemyBase.IsDead)
|
||||
return;
|
||||
|
||||
if (animator == null || navMeshAgent == null)
|
||||
return;
|
||||
|
||||
@@ -71,20 +77,29 @@ namespace Colosseum.Enemy
|
||||
/// </summary>
|
||||
public void PlayAttack()
|
||||
{
|
||||
if (IsServer && animator != null)
|
||||
{
|
||||
animator.SetTrigger(attackTriggerParam);
|
||||
}
|
||||
if (!IsServer || animator == null)
|
||||
return;
|
||||
|
||||
// 사망 상태에서는 공격 애니메이션 재생하지 않음
|
||||
if (enemyBase != null && enemyBase.IsDead)
|
||||
return;
|
||||
|
||||
animator.SetTrigger(attackTriggerParam);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 스킬 애니메이션 트리거 (외부에서 호출)
|
||||
/// </summary>
|
||||
public void PlaySkill()
|
||||
{
|
||||
if (IsServer && animator != null)
|
||||
{
|
||||
animator.SetTrigger(skillTriggerParam);
|
||||
}
|
||||
if (!IsServer || animator == null)
|
||||
return;
|
||||
|
||||
// 사망 상태에서는 스킬 애니메이션 재생하지 않음
|
||||
if (enemyBase != null && enemyBase.IsDead)
|
||||
return;
|
||||
|
||||
animator.SetTrigger(skillTriggerParam);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -93,10 +108,14 @@ namespace Colosseum.Enemy
|
||||
/// <param name="triggerName">트리거 파라미터 이름</param>
|
||||
public void PlayTrigger(string triggerName)
|
||||
{
|
||||
if (IsServer && animator != null)
|
||||
{
|
||||
animator.SetTrigger(triggerName);
|
||||
}
|
||||
if (!IsServer || animator == null)
|
||||
return;
|
||||
|
||||
// 사망 상태에서는 일반 애니메이션 재생하지 않음
|
||||
if (enemyBase != null && enemyBase.IsDead)
|
||||
return;
|
||||
|
||||
animator.SetTrigger(triggerName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user