Unreal Engine 5/Tutorial Project: FirstGame

Unreal Engine 5로 첫 게임 만들기 12(Event, Cursor, Hit Result, Movement, Player Controller, Unit Direction)

HappyFrog 2022. 6. 21. 18:12

 

Unreal Engine 5로 첫 게임 만들기 10(Blueprint, Actor, GameMode, Pawn, Player Controller, Play)

Unreal Engine 5로 첫 게임 만들기 9(Vegetation, Migrate, Foliage) Unreal Engine 5로 첫 게임 만들기 8(Nanite, Vertex Normal WS, Absolute World Position, Lerp, Foliage, Divide, Component Ma Unreal Eng..

bodong2.tistory.com

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


 

 

 

Movement


이제 캐릭터 이동을 구현해봅시다.

 

이동을 구현하는 방법은 여러가지가 있습니다.

 

여기서는 플레이어의 입력을 아까 만든 Player Controller에 구현하려고 합니다.

 

컨트롤러는 몸(BP_Bot)을 통제하는 뇌와 같다는 사실을 잊지마세요.

 

BP_Controller의 Event Graph를 보면 여러 노드가 있는데 여기서 보이는 Event BeginPlay, Tick, Destroyed는 모든 액터가 거쳐가는 라이프 사이클의 일부입니다.

 

BeginPlay스폰될 때 실행되고 Tick은 월드에서 업데이트 될 때 실행되며 Destoryed제거될 때 실행됩니다.

 

Destroyed는 필요없으니 지워줍시다.

 

 

Print String을 사용해 화면에 텍스트를 넣어봅시다.

 

BeginPlay와 연결해주고 저장한 뒤, 씬을 플레이하여 확인해봅시다.

 

플레이를 하면 좌상단에 Hello라는 Print String의 텍스트가 출력되는 것을 확인할 수 있습니다.

 

이번에는 Event Tick에 연결하여 어떤 일이 생기는지 확인해보죠.

 

월드에서 업데이트될 때마다 실행되므로 엄청나게 많이 출력되는 것을 확인할 수 있습니다.

 

이런 이유로 Tick을 사용할 땐 주의해야 합니다.

 

복잡한 코드를 Tick마다 일어나게 하면 안좋은 영향이 있을 것입니다.

 

하지만 캐릭터는 Tick마다 움직여야 합니다.

 

그리고 우리가 지금 보고있는 BP는 Controller이므로 캐릭터에 대한 액세스가 필요합니다.

 

컨트롤러는 자신이 무엇을 제어하는지 인식하므로 Get Controlled Pawn을 사용할 수 있습니다.

 

이제 이 핀은 우리가 명령을 내릴 수 있는 폰입니다.

 

이것을 Add Movement Input에 연결시키고 Input과 Tick을 연결하여 틱마다 호출되게 합니다.

 

단순화를 위해 Bot에 있는 Character Movement 컴포넌트로 간다고 합시다.

 

방향을 정해주기 위해 벡터 X를 1로 지정하고 씬으로 돌아가 살펴봅시다.

 

Play를 누르면 액터가 지정한 방향으로 가다가 가로막히는 것을 볼 수 있습니다.

 

그렇다면 이제 어느 방향으로 갈지 계산해야 합니다.

 

BP에서는 많은 요소에 액세스할 수 있는데 여기에는 커서 아래의 월드 위치도 포함됩니다.

 

더 심화된 내용으로는 트레이스 채널을 여럿 보유할 수도 있겠지만 지금은 현상유지 하겠습니다.

 

Get Hit Result Under Cursor by Channel를 만들어주세요.

 

여기에는 정보가 많이 들어있으므로 Break Hit Result를 통해 자세히 살펴볼 수 있습니다.

 

지금 필요한 것은 Location 뿐입니다.

 

월드 내 커서의 위치를 얻었는데, 한 가지 위치가 더 필요합니다.

 

월드 내 봇의 위치입니다.

 

이것은 Get Actor Location을 폰에 연결하면 됩니다.

 

이 두 위치를 기반으로 벡터 계산 함수인 Get Unit Direction을 사용할 수 있습니다.

 

이 함수는 두 위치로부터의 벡터 방향을 제공합니다.

 

이렇게 캐릭터는 커서가 있는 방향으로 움직이게 됩니다.

 

플레이 중일 때 Viewport를 클릭하면 마우스커서가 사라지는데 이는 PlayerController에서 보이도록 설정을 할 수 있습니다.

 

이렇게 말이죠

[놀자에몽]