본문 바로가기

카테고리 없음

[언리얼 실습] 78. 플레이어가 죽을 시 에너미 공격 멈추기


목차

  1. 에너미 공격 멈추기

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();
}

 

대상이 없으면 공격함수를 리턴한다.

 

이렇게 해서 간단하게 기능을 구현하였다.