목차
- 에너미 공격 멈추기
1. 에너미 공격 멈추기
현재 플레이어가 죽더라도 에너미가 계속해서 공격을 한다. 일부 게임에서는 캐릭터의 생존 여부와 상관없이 계속해서 공격하는 게임도 있긴 하지만 현재는 기능을 구현하는 게 중심이기 때문에 더 이상 공격을 못하게 고쳐보려고 한다.
비주얼 스튜디오로 들어가자.
void ABaseCharacter::Attack()
{
}
현재 베이스 캐릭터의 공격 함수는 비어있는데 이것을 채워볼 것이다. 공격하는 대상 파악하고 체력이 얼마남았는지를 알면 공격을 진행할지 말지를 알 수 있다.
공격 대상이 누구인지 캐스팅해서 알 수 도 있겠지만 캐스트는 비용이 많이 들기 때문에 태그를 확인해서 이 작업을 진행하려고 한다.
void ABaseCharacter::Die()
{
Tags.Add(FName("Dead"));
PlayDeathMontage();
}
Die 함수에서 태그를 추가한다. 이렇게 하면 죽은 액터에만 태그가 붙을 것이다.
void ABaseCharacter::Attack()
{
if (CombatTarget && CombatTarget->ActorHasTag(FName("Dead")))
{
CombatTarget = nullptr;
}
}
캐릭터가 죽었으면 nullptr로 초기화를 한다.
그리고 에너미의 공격함수로 들어가자.
void AEnemy::Attack()
{
Super::Attack();
if (CombatTarget == nullptr) return;
EnemyState = EEnemyState::EES_Engaged;
PlayAttackMontage();
}
대상이 없으면 공격함수를 리턴한다.
이렇게 해서 간단하게 기능을 구현하였다.