본문 바로가기
언리얼 블루프린트/컴포넌트

[언리얼5 블루프린트] 적 캐릭터의 추적 컴포넌트 만들기

by 디버그러 2024. 7. 8.

저번 글에서 적 캐릭터가 플레이어를 인식하는 컴포넌트를 만들었습니다.

이를 이용해 플레이어를 추적하는 컴포넌트를 만들겠습니다.

 

 

새로운 블루프린트 클래스 액터 컴포넌트를 만들었습니다.

 

 

Get Owner 노드Get Component by Class 노드를 연결했습니다.

Component Class에 저번 글에서 만든 인식을 넣고 Return Value 값을 변수로 승격하여 인식중이라고 이름 변경했습니다.

아직 전체 노드를 연결하지 않은 상태입니다.

 

비슷한 노드로 Get Components By Class 노드가 있는데 이는 단일 컴포넌트가 아닌 모든 컴포넌트를 가져옵니다.

 

 

인식중이라는 변수에서 선을 끌어와 플레이어 변수를 가져올 수 있습니다.

이전 글에서 만든 인식 컴포넌트에서 컨트롤러를 가진 캐릭터를 플레이어로 지정했었습니다.

 

Get Component by Class 노드를 통해 인식 컴포넌트를 가져왔기에 그 안의 플레이어 변수를 이용할 수 있게 된 것입니다.

 

 

Is Valid 노드AI Move To 노드를 추가했습니다.

인식중인 플레이어가 맞을 경우 움직이도록 만들 예정입니다.

 

 

Pawn을 변수로 승격하여 자신으로 이름 변경했습니다.

 

 

아까 사용했던 Get Owner 노드에 Cast To Pawn 노드를 추가했습니다.

이를 이용해 자신 변수가 폰이 맞는지 여부를 확인할 것입니다.

 

 

변수로 지정해둔 SET 자신을 가져와 폰인지 여부를 확인했습니다.

자신이 폰이 맞다면 캐릭터를 플레이어로 인식하게 됩니다.

 

 

Get Actor Forward Vector 노드Add Movement Input 노드를 추가했습니다.

이를 통해 캐릭터가 보는 앞쪽 방향으로 이동하는 애니메이션이 만들어집니다.

 

Add Movement Input을 통해 이동 속도와 방향 정보가 애님블루프린트로 전달되어 적절한 애니메이션 재생되는 것입니다.

Get Actor Forward Vector가 아닌 Get Actor Right Vector 노드를 이용하면 캐릭터가 옆으로 이동하며 웃기게 쫓아오는 것을 볼 수 있습니다.

 

이제 인식이 종료됐을 때 캐릭터가 원래 위치로 돌아가도록 추가해보겠습니다.

 

 

Get Owner 노드Get Actor Location 노드를 통해 위치 정보를 가져와 원래위치로 변수 승격했습니다.

 

 

Is Valid 노드의 Is Not Valid에 AI Move To 노드를 추가했습니다.

Pawn은 자신, Destination은 원래 위치 변수를 넣었습니다.

 

 

돌아갈 때도 이동하는 애니메이션이 나오도록 Add Movement Input 노드를 추가합니다.

이 상태로도 움직일 수 있지만 원래 위치에 도착했는데도 계속 애니메이션이 나오는 현상이 발생합니다.

 

원래 위치로 돌아가면 애니메이션도 종료되도록 해보겠습니다.

 

 

자신 변수에서 Get Actor Location 노드를 통해 현재 위치 정보를 가져왔습니다.

Distance (Vector) 노드를 통해 두 위치의 차이를 구합니다.

 

 

이 차이가 10보다 크다면 아직 도착하지 못했다는 뜻입니다.

 

 

Select 노드를 추가해 Index를 부울로 바꿨습니다.

 

 

이제 Select 노드를 연결해주면 끝입니다.

아직 도착하지 못했다면 Scale Value가 1이라서 계속 움직이고

도착했다면 Scale Value가 0이기에 애니메이션이 나오지 않습니다.

 

여기서 Scale Value는 움직이는 정도입니다.

False를 0.5로 한다면 원래 위치에 돌아가서도 느리게 계속 움직이게 됩니다.

 

이제 AI 캐릭터가 AI Move To 노드를 이용해 움직이려면 하나의 과정이 추가됩니다.

 

 

네비메시 바운드 볼륨을 추가합니다.

AI 캐릭터가 이동할 수 있는 모든 공간을 포함하도록 크기를 조정해줍니다.

AI Move To 노드를 통해 만든 AI 캐릭터는 이 네비 메시를 사용하여 이동 가능한 경로를 찾고 이동할 수 있게 됩니다.

 

P 키를 눌러 내비 메시가 올바르게 생성되었는지 확인할 수 있습니다.

 

혹시 캐릭터가 쫓아오는게 너무 느리다면 설정을 바꿀 수 있습니다.

캐릭터 블루프린트 → 컴포넌트 패널 → 캐릭터 무브먼트 → 디테일 패널 → 최대 걷기 속도 수정

 

▲ 인식, 추적 컴포넌트 사용