회전 다루기 (Control Rotation)

Ryany (윤성)·2025년 1월 31일
post-thumbnail

액터의 회전값을 반영해서 내가 조준하고있는 방향을 쏘는방법을 알아보자 🎮

회전 다루기(Control Rotation)

1. 회전의 여부를 알기위해 대포알의 Scale 모양을 변경해준다

  • BP_Projectiole 클래스를 열고 Static Mesh component로 가서 Transform에 Scale이라는 속성의 X값을 2로 늘려준다

2. Level Blueprint에서 Get Player Pawn의 회전을 얻어낸다

  • player pawn에서 레퍼런스 노드를 드래그해서 Get Actor Location과 매치되는 Get Actor Rotation을 찾는다
  • 새로생긴 Actor 노드를 Spawn Transform Rotation으로 드래그 해준다

3. 회전값을 Spawn Transform Rotation 으로 연결후 씬을 플레이해봐도 변경되지 않음

  • 언리얼의 Pawn이 카메라 회전과 함께 회전하도록 하려면 회전을 반영해주는 Control Rotation을 적용해야하기 때문이다❗

4. Control Rotation 노드 연결

  • Get Actor Rotation노드를 제거한후 Control Rotation 노드를 spawn노드에 연결 했더니 발사체가 약간 옆으로 나는 것을 확인할수있다

벡터란(Vector)?

벡터는 3D 공간에서의 방향과 크기를 말하고 프로그래밍에서 벡터는 
3개의 부동소수점 값 X, Y, Z로 구성되어있다    

발사체에 쿼리 주기

발사전 Spawn Transform Rotation에서 회전이 올바른 방향으로 회전된다면 
전방 벡터(Foward Vector)를 받아와 발사체를 회전한 방향으로 가게끔 한다 

1. Get Forward Vector

  • 발사체의 Spawn Actor 노드에서 return value를 참조해 벡터값을 얻기위해 Get Forward Vector 노드를 추가한다
  • 임펄스에 직접 연결해보면 발사체가 그냥 수직으로 떨어진다...?
  • 벡터값을 임펄스에 직접 연결해도 별효과가 없는 이유는
    벡터의 길이는 항상 1이고 언리얼에서의 단위는 센티미터이기 때문에 초당 1센티미터로 이동하는 것이기 때문

2. 벡터에 부동소수점 값을 곱해주기

  • 전방 벡터의 리턴값을 드래그해서 Multiply라는 Operator 노드를 추가한다
  • Multiply값을 발사체 무게(1000.0kg)의 4배인 4000.0으로 지정한다
  • Multiply값을 임펄스한다면 공은 앞으로 나아갈것이다

에셋을 불러오는 방법 (Importing Assets)

발사체를 발사할 씬에 구조물이 별로없음으로 더 많은 구조물들을 추가한다
  • 에픽게임즈 런처의 Fab에서 추가하고싶은 에셋을 찾는다
  • Fab Library에서 조금전 추가한 에셋을 특정 프로젝트에 추가한다
  • 프로젝트의 Content Drawer에서 추가한 에셋이 Content폴더안에 있는것을 확인할수있다
  • meshes 폴더안의 구조물들을 드래그해서 씬에 추가한다

회전과 쿼리를 적용한 결과 😯

씬에 추가된 에셋 구조물의 pyshics를 활성화해주고 발사체를 발사했을때 
실감나게끔 하기 위해 무게가 무거워 보이는 구조물들의 mass를 수정해주었다 

profile
Junior Developer :>

0개의 댓글