언리얼 엔진5 강의 요약 – 4. 창고부수기 게임 3편 (Pawn, Location, Roatation, Vector)

이 게임이 뭐더라?


창고부수기 게임임.

1인칭으로 맵을 유영하면서 내가 조준하는 방향으로 총알을 쏴서 물체들을 부수는 게 목표!

지금 총알 쏘는 건 내가 어딨든 고정된 위치에 스폰되어 고정된 방향으로 발사가 됨.

폰에 대해서(Pawn, Player Start)

레벨에서 시뮬레이션을 돌리고, F8을 누르면 유체 이탈이 되면서 내가 빙의됐던 물체가 보임. 이를 폰이라고 한다.

이를 시뮬레이션 중단하고 아웃라이너를 다시보면 폰이 없음. 이는 시작과 동시에 폰을 스폰하기 때문임.

이 스폰은 Player Start라는 아이템으로 이뤄짐. 폰 위치 변경하려면 얘를 조절해야 겠쥐?

총알이 플레이어 폰 위치에서 스폰되게 하기

자 아까 레벨 블루프린트에서 총알 이벤트를 살짝 바꿔서,

플레이어 폰이 있는 곳에서 총알이 발사되도록 바꿔보자~

Get Player Pawn에서 Get Actor Location을 뽑아 Spawn Location에 넣어주면

플레이어 폰이 있는 곳에서 총알이 스폰되고,

조준을 해주려면 Rotation을 조정해줘야 한다.

그래서 Get Actor Rotation으로 폰의 로테이션(방향) 좌표를 받아서 반영해주면 제대로 안 됨.

기본 플레이어 폰은 액터의 로테이션과 컨트롤의 로테이션이 연동이 되어있지 않아서임. 원하는 것을 하려면 컨트롤 로테이션을 받아와야 함.

플레이어가 바라보는 방향으로 총알이 회전되도록 하기

이렇게 말이다. 근데 이렇게 해도 카메라 방향대로 나가는게 아니다.

임펄스의 벡터가 폰의 로테이션 된 전방이 아니라, 레벨 좌표 내에서의 전방인 X로 고정되어 있기 때문임.

그럼 어떻게 해야 하는가?

임펄스의 힘 방향을 폰의 컨트롤 로테이션 값으로 돌려진 총알의 전방으로 먹여줘야 함.

총알이 제대로 조준되도록 하기

전방 벡터는 Get Forward Vector로 구할 수 있는데 이는 크기가 1이 기본임. 1은 언리얼에서 1cm. 매우 작은 값이라 힘을 곱해주어야 함.

이는 벡터의 곱으로 표현할 수 있다.

자 이대로 시뮬레이션 돌려보자! 그러면 플레이어의 위치와 바라보는 방향에 따라 총알이 제대로 나가는 것을 볼 수 있다!

이제 제법 게임다워졌네…

마치며…


이전글

다음글


Posted

in

, ,

by

Tags:

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다