게임엔진/Unreal

[블루 프린트] 객체(Actor) 이동

CodeJB 2024. 5. 5. 23:26

Actor의 이동을 제어하기 위한 블루프린터 function에 대해 알아보자.

 

1. SetActorLocation

키 입력에 의해 현재 상태가 Move일 때, Actor의 새로운 위치를 Set함으로써 이동시키는 function이다.

Get Actor Location으로 현재 위치 값을 가져오고, Select를 이용하여 Up, Down, Left, Right에 따라 미리 Vector값을 할당하여 이 두 값을 더해준다. 더해진 값을 Set Actor Location에 전달하여 Actor 위치가 새롭게 갱신된다.

프레임에 따라 속도값을 균등하게 맞추기 위해 World Delta Seconds를 Speed에 곱해주었다.

 

Sweep설정을 하면 오브젝트와 충돌처리를 하여 이동을 막는다.

 

2. AddMovementInput 

 

SetActorLocation 대신 AddMovementInput으로 대체한 모습이다.

바뀐점은

1. World Delta Seconds와 Speed 곱연산이 사라짐

2. GetActorLocation으로 현재 Actor위치를 신경쓰지 않음

3. 현위치와 Select값의 덧셈연산이 사라짐.

 

이유가 뭘까?

AddMovementInput는 사실 위와같이 CharacterMovement와 AddInputVector가 연결된 것과 유사하다.

CharacterMovement는 캐릭터의 이동 로직에 필요한 대부분의 기능들이 "이미 구현된" 컴포넌트이다.

기능이 무진장많지만, 스피드값을 지정해주는건 물론이고 가속도나 중력값과 같은 물리엔진을 제공한다. 여기서 스피드 값을 기본적으로 deltatime을 반영한 값이다. 이동과 관련해서는 만능 컴포넌트라고보면 된다. 필요한 기능이 있을 때마다 검색하면서 능숙해지면 좋을듯.

 

여기서 Scale Value는 World Direction의 Vector값에 곱셈이 되는 피연산자이다.

World Direction이 1,1,1이고 Scale Value가 5.0이면 5,5,5가된다.