공부/Game Bootcamp
[TIL] #7. 플레이어 피격 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기
Ail_
2025. 4. 29. 19:30
개요
플레이어가 피격 당했을 때 이펙트 및 애니메이션을 구현했다.
내용
일단 고민이 있었다 : PlayerState로 구현할 것이냐, PlayerAction으로 구현할 것이냐, 그냥 메서드로 구현할 것이냐
일단 기준을 확고히 했다. PlayerAction은 플레이어 입력 행동(공격, 대시)이므로 맞지 않았다.
그리고 PlayerState로 구현하는 경우엔 상태가 전환되기 때문에 캐릭터에 대한 조작이 멈출텐데, 지금 개발하는 게임의 경우 하트 4개 맞으면 사망이라 해당 부분을 고려해서 피격 되어도 공격이 가능했으면 했다.
따라서 메서드로 구현했다.
#region 피격 관련
// TODO: Editor에서 확인하기 위한 임시용
public void TakeDamage()
{
if (CurrentState == PlayerState.Dead) return;
// 피격 이벤트 재생
PlayerHitEffect();
// 죽었는지 체크
if (currentHP <= 0) SetState(PlayerState.Dead);
}
public void TakeDamage(CharacterBase character)
{
if (character != this) return; // 혹시 다른 애가 맞은 경우 무시
if (CurrentState == PlayerState.Dead) return;
// 피격 이벤트 재생
PlayerHitEffect();
// 죽었는지 체크
if (currentHP <= 0) SetState(PlayerState.Dead);
}
private void PlayerHitEffect()
{
if (_currentAction != _attackAction || !_attackAction.IsActive)
PlayerAnimator.SetTrigger("GetHit");
hitEffectController.PlayHitEffect();
cameraShake.Shake();
}
#endregion
느낀 점
유료에셋을 구매하면 애니메이션은 싹 바꿔야해서 일단 제일 간단하게, 최소한으로 구현하고 있다. 피격 이펙트는 좀 찾아보다가 그냥 직접 만들었다(이미지 자료) 가끔은 그냥 직접 만드는 게 오히려 빠를 때가 있는 것 같다.