목차
- Pawn Sensing Component
- 캐릭터 발견시 함수 호출하기
1. Pawn Sensing Component
이제 에너미가 플레이어를 발견하면 추적하게 하고 싶다. 에너미가 캐릭터를 보기 위해서는 Pawn Sensing Component가 필요하다.
C++에서 이를 만들어보자.
UPROPERTY(VisibleAnywhere)
class UPawnSensingComponent* PawnSensing;
이것을 이제 실제 생성자에서 만들어주어야 한다.
PawnSensing = CreateDefaultSubobject<UPawnSensingComponent>(TEXT("PawnSensing"));
PawnSensing->SightRadius = 4000.f;
PawnSensing->SetPeripheralVisionAngle(45.f);
VisionAngle을 기본 45도로 설정하였고 시야 최대 거리는 4000.f (40m)로 설정하였다.
이제 에너미가 플레이어를 보면 어떤 반응을 보일지 함수로 만들어보자.
2. 캐릭터 발견시 함수 호출하기
캐릭터를 봤을때 무엇인가 작동한다는 것은 그것이 델리게이트로 보내져서 콜백함수를 호출하는 로직일 가능성이 매우 높으며 여기서도 마찬가지이다.
UFUNCTION()
void PawnSeen(APawn* SeenPawn);
델리게이트로 부르기 위해서는 언리얼 리플렉션 시스템에 노출시킬 필요가 있다.
void AEnemy::PawnSeen(APawn* SeenPawn)
{
UE_LOG(LogTemp, Display, TEXT("Pawn Seen"));
}
함수는 일단 로그를 출력하는 것만 구현하였다. 이제 이것을 바인딩 하자
void AEnemy::BeginPlay()
{
Super::BeginPlay();
// 생략
if (PawnSensing)
{
PawnSensing->OnSeePawn.AddDynamic(this, &AEnemy::PawnSeen);
}
}
바인딩을 했으니 이제 감지가 되나 확인해보자.
정상적으로 로그가 뜨는 것을 볼 수있다.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 61. 공격 사거리 안으로 들어오면 공격상태로 만들기 (0) | 2024.11.05 |
---|---|
[언리얼 실습] 60. 에너미의 순찰, 추격, 공격 상태 구분하기 (0) | 2024.11.05 |
[언리얼 실습] 58. 패트롤 대기 시간 추가하기 (0) | 2024.11.05 |
[언리얼 실습] 57. 에너미 실제로 패트롤 시키기 (0) | 2024.11.04 |
[언리얼 실습] 56. 에너미 패트롤 하기. (0) | 2024.11.04 |