Unreal Engine 5/Tutorial Project: FirstGame

Unreal Engine 5로 첫 게임 만들기 17 (AI Controller, AI MoveTo, NavMesh, Dynamic Material Instance, Vector Parameter Value)

HappyFrog 2022. 6. 28. 18:53

 

 

Unreal Engine 5로 첫 게임 만들기 16 (Animation, Analysis, Locomotion, Transition Rule, Blend Space, Animation Blueprint)

Unreal Engine 5로 첫 게임 만들기 15 (Character Movement, Character Rotation, Spring Arm, 3rd perspective) Unreal Engine 5로 첫 게임 만들기 14 (Character Setup, Skeletal Mesh, Skeleton, Emissive Col..

bodong2.tistory.com

이전 게시글에서 이어집니다.


 

 

 

AI Controller


이제 봇이 준비되었으니 더 많은 작업을 할 수 있습니다.

 

봇을 씬으로 올리고 AI컨트롤러로 제어하겠습니다.

 

FrameWork > BP_Bot을 올려주세요.

 

현재는 PlayerController가 봇을 제어하도록 설정되어 있으니 AI Controller도 봇을 제어할 수 있도록 사용할 수 있습니다.

 

블루프린트를 하나 만듭시다.

 

AI로 검색하여 AIController를 만들고 BP_AIController로 명명합니다.

 

열고 EventGraph로 이동합니다.

 

이동을 추가하거나 Tick을 사용하지 않을 예정이니 Tick노드는 삭제합니다.

 

AIController엔 AI MoveTo라는 노드가 있습니다.

 

이 함수로 캐릭터에 명령을 내릴 수 있습니다.

 

하지만 언제, 어떻게 명령을 내려야 할까요?

 

우선 게임 시작 몇 초 후에 이 함수를 실행해봅시다.

 

그러기 위해서 Set Timer by Event 노드를 추가하여 3초로 설정해줍니다.

 

이 대리자를 드래그하여 Add Custom Event를 추가합니다.

 

이름은 Move로 해주세요.

 

마지막으로 할 일은 현재 제어 중인 폰에게 이 명령을 전달하는 것입니다.

 

그러니 AI MoveTo의 Pawn을 드래그하여 Get Controlled Pawn을 연결해주세요

 

씬으로 돌아가 BP_Bot > Details > AI Controller > BP_AIController로 바꿔주세요.

 

이제 캐릭터가 움직이기 위해 마지막으로 필요한 것은 장애물 위치 등의 내비게이션 데이터입니다.

 

생성메뉴에서 NavMesh를 입력하고 NavMeshBoundsVolume을 선택합니다.

 

P를 누르면 내비 메시 디이터를 표시하거나 숨길 수 있습니다.

 

로봇이 걸어다닐 영역만큼 크게 키워주세요.

 

저는 이 정도면 충분한 것 같습니다.

 

플레이를 눌러보면 AI는 3초 이후에 스스로 움직이기 시작하는 것을 확인할 수 있습니다.

 

근데 0,0,0 으로 향합니다.

 

이유는 그 곳이 AI MoveTo에 설정된 디폴트 목적지이기 때문입니다.

 

이 것은 나중에 해결하도록 하죠.

 

현재는 두 봇이 색이 같아 구분하기 힘듭니다.

 

해결하기 위해 색을 바꿔줍시다.

 

BotContruction Script를 사용하겠습니다.

 

BP_Bot > Construction Script > Mesh로 들어가서 머티리얼을 보면 바디 머티리얼은 Element 0인 것을 볼 수 있습니다.

 

이 머티리얼에는 이미 Color로 명명한 매개변수가 있습니다.

 

다시 Construction Script로 돌아가 Mesh를 선택해주세요.

 

MeshGraph로 끌어옵니다.

 

그리고 Create Dynamic Material Instance 노드를 만들어 연결합니다.

 

Contruction ScriptCreate Dynamic Material Instance와 연결합니다.

 

Create Dynamic Material Instance의 Element Index0이므로 바디 머티리얼을 나타냄을 알 수 있습니다.

 

이것을 다시 Set Vector Parameter Value노드와 연결해줍니다.

 

그리고 Set Vector Parameter Value의 매개변수 이름을 Color로 설정한 뒤 Value의 색을 바꿔줍니다.

 

이제 Compile을 누르고 씬으로 돌아가서 확인하면 캐릭터의 색이 바뀌었음을 확인할 수 있습니다.

 

기존 캐릭터와 확실하게 구분이 될 것입니다.

 

하지만 이제 씬의 모든 봇이 파란색이 될 것입니다.

 

봇마다 다른 색을 설정하려면 색깔을 상수가 아닌 변수로 지정해야합니다.

 

따라서 SEt Vector Parameter Value의 Value를 드래그하여 변수로 승격시켜주고 Color로 명명합니다.

 

My Blueprint에 있는 작은 눈 아이콘으로 이 변수를 인스턴스별로 편집 가능하도록 노출할 수 있습니다.

 

또는 Color의 Details에서도 가능합니다.

 

우선 Color를 아까와 같은 색으로 되돌려줍니다.

* 만약 Color변수의 Color Picker가 보이지 않는다면 Compile을 하면 나타납니다.

 

이제 이 작은 봇에 고유한 색깔을 부여할 수 있습니다.

 

씬의 Bot에서 Default > Color를 통해 색을 선택하면 됩니다.

 

이렇게 자체 컨트롤러와 AI가 생겼습니다.