ToonTanks는 소형 탱크를 조종해 적을 섬멸하는 미니게임이다.
BasePawn을 통해 Tank와 Turret을 제작하였다. 제작간 Static Mesh는 제공되는 Head와 Body Mesh를 이용하였다. 그리고 콜리션을 Static Mesh 크기에 맞게 추가하였다.
Crypt Raider 제작간 컴포넌트는 Unreal Engine Editer를 이용해 추가하였는데 이번에는 VSCode에서 CPP를 이용해 추가하였다. Crypt Raider를 제작했을때 부족했던 Unreal Engine Function에 대해 자세히 공부하는 계기가 되었다.
언리얼 엔진이 이 변수를 언리얼 엔진 리플렉션 시스템에 참여할 수 있게 인식하는 방법으로 여러 종류가 있다. 아래 표를 이용해 한눈에 알 수 있다.
각 용도에 알맞는 Component를 선언하고 Component를 생성해준다.
CreateDefaultSubObject : 구성 요소 또는 하위 객체를 생성하면 하위 클래스를 생성하고 상위 클래스를 반환할 수 있습니다.
SetUpAttachment : 구성 요소를 특정 구성 요소에 연결하기 위해 사용한다.
그리고 설정한 BasePawn을 통해 Tank Component를 제작한다.
Tank는 BasePawn을 상속받기 때문에 include "BasePawn.h"을 해준다.
그리고 Tank에서 사용할 CameraComponent와 SpringArmComponent를 선언하였다.
CameraComponent : 카메라
SpringArmComponent : 빨간선(이어주는 역활)
여기서 SpringArm와 Camera를 사용하기 위해 두개를 모두 include를 해주었는데 꼭 모든 Component를 include할 필요는 없다. include한다는 것은 해당 컴포넌트의 기능을 모두 불러오겠다는 뜻으로 불필요한 데이터를 가져올 수 있다. 그렇기 때문에 전방 선언을 사용한다.
전방 선언은 헤더파일이 실제 필요한 곳에만 포함하는 것이다. 전방 선언을 사용하면 새 포인터를 선언하는데 헤더파일이 필요하지 않다. 특정한 타입의 오브젝트를 생성하고자 할때는 헤더 파일이 필요하지 않지만 상속 할때는 헤더 파일이 필요하다.
Component를 선언할때 앞에 class를 사용하면 된다.
SetupPlayerInputComponent : Pawn이 커스텀 입력 바인딩을 설정할 수 있도록 합니다.
SpringArm이 움직여지지 않아 시야가 Tank Static Mesh 뒤로 고정되는 문제가 생겼다. 이를 해결해야 한다. 저번과 똑같이 공식문서 ,커뮤니티의 도움을 받아 문제를 해결할 것이다. 제작 과정간 문제가 될만한 행동을 하지 않았기에 문제를 찾는데 시간이 꽤 걸릴 수도 있을 것 같다.