본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-9

게임 플레이 중 F8을 누르면 몸에서 빠져나온 다음과 같은 구체를 확인이 가능하다.

해당 오브젝트는 이며 월드에서 플레이어의 물리적 묘사를 나타낸다.

폰은 게임 플레이 중에만 확인이 가능하고 게임 플레이를 중지하면 다시 사라진다.

 

언리얼은 기본적으로 씬 안에 폰을 스폰하고 Player Start라는 씬 안의 액터가 주어진 위치에 배치된다.

해당 액터가 폰을 스폰하며 폰이 스폰되는 위치이다.

아웃라이너의 Player Start
씬 안에 배치된 Player Start

 

 

스폰 위치에서 발사체를 발사하는 것을 목표로 하므로 이제 플레이어 폰의 위치를 노드를 통해 얻어야한다.

Get Player Pawn을 통해 플레이어 폰의 획득이 가능하다.

해당 노드를 불러오면 왼쪽에 타입이 Integers인 Player Index를 볼 수 있다.

자세히 설명을 보면 "플레이어 컨트롤 목록의 인덱스로, 로컬 플레이어로부터 시작하여 사용할 수 있는 리모트 플레이어로 가는 식입니다."라고 적혀 있다.

이는 멀티플레이어에 대한 설명으로 싱글 플레이어의 경우 index 0은 첫 번째이자 유일한 플레이어이다.

 

이제 해당 폰을 통해 연결된 기능인 Get Actor Location을 통해 현재 폰의 위치를 가져온다.

리턴 값을 보면 데이터 타입이 벡터인 것을 확인할 수 있고 이는 Spawn Transform Location과 일치한 것을 확인할 수 있다.

바로 연결해주면 이제 스페이스바를 누를 때마다 폰의 위치에서 발사체가 스폰된다.

 

기존 임펄스를 Z축으로 뒀기에 지금 스페이스바를 누르면 생성가 동시에 위로 임펄스가 가해진다.

우리가 원하는 건 앞으로 발사하는 것이므로 x축의 값을 건드리며, Player Start의 x 축을 보면 반대로 되어있는 것이 확인 가능하기에 -의 값을 부여한다.

 

또한 해당 강의에서 구체의 질량이 가볍다고 생각하여 아래와 같이 질량을 더욱 무겁게 해주었다.