728x90
이번 글에서는 적 캐릭터가 내 캐릭터를 조준하도록 만드는 방법을 알려줄 것이다.
적이 나를 조준하기 위해선 플레이어를 인식하고, 플레이어의 위치를 바라보도록
적의 몸을 회전시켜 주어야 할 것이다.
STEP 1 :
// EnemyAIController.h
class PISTOL_API AEnemyAIController : public AAIController
{
GENERATED_BODY()
protected: // << 중요
virtual void BeginPlay() override;
};
저번에 AIController가 게임 실행 시 생성되는 것 까지 했었다.
그렇다면 생성되고 난 직후에, 무엇을 할지를 정해야한다.
Actor 클래스에 있는 BeginPlay()를 오버라이드 하여 정의해 줄 것이다.
cpp 파일에 이제 함수를 구현할 것이다.
#include "Kismet/GameplayStatics.h" // GetPlayerPawn을 사용하기 위해
void EnemyAIController::BeginPlay()
{
Super::BeginPlay();
// 폰 변수를 만들고 플레이어 인덱스(0)로 플레이어 폰을 저장
APawn* PlayerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0);
}
UGamePlayStatics:: 를 사용하기 위해서 반드시 Kismet/GameplayStatics.h 를 include 해주어야 한다.
Return 타입이 APawn* 형태인 GetPlayerPawn() 함수를 통해 World의 0번째 플레이어 인덱스를 가진
플레이어의 Pawn을 가져온다.
void AEnemyAIController::BeginPlay()
{
Super::BeginPlay();
// 폰 변수를 만들고 플레이어 인덱스(0)로 플레이어 폰을 저장
APawn* PlayerPawn = UGamePlayStatics::GetPlayerPawn(GetWorld(), 0);
SetFocus(PlayerPawn); // 플레이어 폰의 위치로 SetFocus
}
PlayerPawn 으로 SetFocus 함수를 써주면 된다.
SetFocus 함수는 AIController.h에 선언되어 있다.
Focus할 대상과 우선순위를 받는 것으로 보인다.
cpp 파일로 가서 SetFocus 를 뜯어보면
대충 이렇게 생겼다. 우선순위에 맞게 대상에게 초점을 맞추는 형식이다
AAIController::SetFocus | Unreal Engine Documentation
빌드 후
여기까지 하고 게임을 실행시켜보면,
적 캐릭터가 플레이어의 움직임에 따라 회전하는 것을 확인 할 수 있다.
728x90
'언리얼5 & C++' 카테고리의 다른 글
[언리얼5] Data Table 로더 만들기 *1부* (CSV) with Python / 데이터 작성하기 (0) | 2024.01.24 |
---|---|
[언리얼 파이썬 스크립팅] 언리얼 Pycharm 자동 완성하는법 (삽질 노가다 끝에 공유) (0) | 2024.01.22 |
[Unreal 5, C++ & Blueprint] 적 AI 생성하기 : 1 (0) | 2022.06.28 |
[Unreal 5, C++] 캐릭터 사망 & 애니메이션 : C++ 변수, 함수를 블루프린트에서 사용하기 (0) | 2022.06.28 |
[Unreal 5, Blueprint & C++] 캐릭터 점프 구현과 오류 해결 Animation Transition (0) | 2022.06.28 |