본문 바로가기
Unreal

[Unreal 기초] 11. 폰과 로테이션

by leejiwoo21 2025. 1. 7.

프로젝트를 실행하고 F8을 길게 누르면 유체이탈 하듯이 움직일 수 있습니다.

이 때 플레이어가 있던 자리엔 공이 하나 있을텐데 이걸 클릭해보면 아웃라이너에서 DefaultPawn이라는 것을 알 수 있어요.

 

발사체 생성까진 해봤으니 플레이어의 시점에서 발사하도록 발사 시작점과 방향을 조정해봅시다.

 

블루프린트에서 Get Player Pawn 노드와 Get Actor Location으로 플레이어의 위치를 가져와서 Spawn 노드와 연결해 스폰되는 지점을 플레이어의 위치로 설정합니다.

 

이 상태에서 한 번 실행해보면 화면을 돌려도 항상 같은 방향으로 날아가는 것이 아쉽죠.

 

방향을 변경하기 전에 간단한 좌표계 설명을 드리겠습니다.

레벨(맵)과 액터는 각자의 3차원 좌표가 있습니다.

xyz좌표인데,

액터가 바라보는 방향은 X좌표

액터의 오른쪽이 Y좌표

액터의 위가 Z 좌표입니다.

 

그러면 플레이어가 바라보는 방향으로 물체를 날리고 싶으면 어느 방향으로 날려야 할까요?

정답은 X

 

이어서 블루프린트에 스폰되는 발사체 방향을 플레이어의 방향으로 맞춰주고

 

이전엔 레벨 좌표를 기준으로 힘을 주고 있어서 항상 같은 방향으로 날렸다면

이젠 발사체를 기준으로 발사체가 바라보는 방향으로 보내야합니다.

플레이어가 바라보는 방향 = 발사체가 생성되는 방향 = 발사체가 힘을 받는 방향으로

 

플레이어가 바라보는 방향으로 발사체가 발사되는 원리입니다.

 

Get forward Vector는 물체가 정면 벡터를 반환하고,

SpawnActor는 리턴값을 Get foward Vector에 넣으면 발사체가 바라보는 방향 벡터를 구할 수 있죠.

방향 벡터의 크기는 "1" 이기 때문에 무게를 고려해서 50000을 곱하고 ( 곱할 땐 multifly 노드를 사용함)

그 방향으로 힘을 가했습니다.

 

실행하면 스페이스를 누를 때 바라보는 방향으로 발사체가 날아갑니다.

댓글