본문 바로가기
[ CODING STUDY ]/》언리얼엔진5 공부

언리얼엔진5 31장 [Set Actor Rotation, Add Actor Local Rotation, Add Controller Yas Input]

by MRG 2023. 2. 17.
728x90
반응형

▣ 안녕하세요.

이번장에서는 Set Actor Rotation, Add Actor Local Rotation, Add Controller Yas Input 함수들을 사용하며 회전하는 노드를 공부해 보겠습니다. 

회전하는 노드나 움직이는 노드 등 방법은 정해져 있지 않고 사용자의 사용 의도 따라 정합니다. 

 

 

▣ 저번장에 만들었던  Player와 GameMode를 사용하겠습니다. 

 

▣ Edit메뉴에서 Project Settings에 메뉴에 Input에 Axis Mappings를 추가합니다. 

MoveTurn이라는 이름으로 Q와 E키를 지정합니다. 

키를 눌러 회전하는 걸 구현할 예정입니다. 

다른 키로 지정하셔도 되고 

Action Mappings를 추가하셔도 됩니다.

 

▣ Player에 Event Graph에서 노드를 완성합니다.

Set Actor Rotation을 이용해서 키를 누를 때마다 회전을 하겠습니다.

Set Actor Rotation은 그 해당 Actor를 회전값을 세팅합니다.

Set Actor Rotation으로 회전을 하기 위해 외워야 할 공식이 있습니다.

이동하는 코드와 비슷하게 (경과시간(Delta Time) * 속도 * 회전방향(입력값)) + 현재 회전값으로 계산하고 

Set Actor Rotation에 대입을 해주면 됩니다. 

Get World Delta Seconds는 월드에서의 경과시간을 Seconds로 반환해 주는 함수입니다. 

Event Tick에 Delta와 비슷합니다.

Get Actor Rotation에 Z값만 회전하기 때문에 Z 값만 더했고 그걸 그대로 Set Actor Rotation에 넣었습니다. 

그리고 끝이 아니라 Player를 클릭하여 오른쪽 디테일메뉴에서 Pawn에 Use control Rotation Yaw를 체크를 해제하셔야 합니다. 

그래야 Z값이 고정되지 않고 회전할 수 있습니다. 

컴파일 저장 후 

 

▣ Q, E 버튼을 클릭하면 회전하는 걸 확인할 수 있습니다. 

 

▣ 이번에는 Add Actor Local Rotation 함수를 이용해서 회전을 해보겠습니다. 

이것도 공식이 있습니다.

((경과시간 * 속도 * 회전방향(입력값))값을 회전할 노드에 연결만 하면 됩니다. 

 

https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Utilities/Transformation/AddActorLocalRotation/

 

AddActorLocalRotation

AddActorLocalRotation

docs.unrealengine.com

▣ Add Actor Local Rotation함수는 쉽게 이야기해서 

상속 관계에 영향을 받지 않고 자기 자신을 기준으로 회전하는 함수라고 생각하시면 됩니다. 

컴파일 저장 후 Q, E를 누르면 회전되는걸 확인할 수 있습니다. 

 

▣ 이번에는 Add Controller를 검색해보겠습니다.

그럼 위에 이미지처럼 3개의 함수가 나옵니다. 

 

https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Pawn/Input/AddControllerYawInput/

 

Add Controller Yaw Input

Add Controller Yaw Input

docs.unrealengine.com

▣ 이건 쉽게 이야기하면 상속관계인 PlayerController를 같이 회전하는 방식입니다. 

 

▣ 이런 식으로 노드를 완성하고, 디테일 메뉴에서  Use Controller Rotation Yaw를 다시 체크합니다. 

컴파일 저장 후 

 

▣ 씬에서 플레이버튼을 클릭하고 PlayerControll를 선택한 다음 씬을 누르고 Q, E를 누르면 PlayerControll도 같이 회전합니다. 

 

▣ 아까 사용했던 

Set Actor Rotation, Add Actor Local Rotation함수는 PlayerControll가 회전되지 않고 

우리가 생성한 Player0만 회전되는 걸 확인할 수 있습니다. 

 

▣ 다시 정리를 하면 

 

▣ Set Actor Rotation함수는  == (경과시간 * 속도 * 회전방향(입력값)) + 현재 회전값을 넣어주면 된다.

 

▣ Add Actor Local Roation 함수는 == (경과시간 * 속도 * 회전방향(입력값)) 만 넣어주면 된다.

 

▣ Add Controller Yas Input 함수들 또한 (경과시간 * 속도 * 회전방향(입력값)) 만 넣어주면 된다.

 

▣ 단 Add Controller Yas input 함수들은 PlayerControll도 함께 회전한다.

728x90
반응형

댓글