CLASS의 종류
Base가 될 BasePawn을 c++로 생성한다
basepawn은 몇가지 컴포넌트들을 필요로 하는데, 탱크의 베이스와 포탑을 위한 메시가 필요하다.
탱크와 포탑이 서로를 통과하지 않도록 충돌을 처리하기 위한 캡슐 컴포넌트도 필요하다.
컴포넌트란?
언리얼 엔진에는 씬 컴포넌트에서 파생된 다른 클래스들이 몇가지 존재한다
Root Compoenent
BasePawn.cpp에서 RootComponent; 입력하고 정의로 이동을 누르면-> Ator.h에
UPROPERTY(BlueprintGetter=K2_GetRootComponent, Category="Transformation")
TObjectPtr RootComponent; USceneComponent라고 정의되어 있다.
--> 씬 컴포넌트에는 자체적인 트랜스폼이 존재한다.
정리를 하면--
폰에는 이 루트 컴포넌트가 있고, 그 타입은 USceneComponent이며, 폰에는 트랜스폼이 존재한다. 루트 컴포넌트는 시각적 표현이 존재하지 않다
우리는 이 루트 컴포넌트를 재할당 할 수 있다. 씬 컴포넌트에서 타입이 파생된 다른 객체로!
캡슐을 생성해서 이것이 루트가 되도록 할당할 수 있다 기본 값이 씬 컴포넌트 대신에
씬 컴포넌트는 어태치먼트를 지원한다고 했는데, 다른 컴포넌트들을 생성해 씬 컴포넌트에 연결할 수 있다.
예를 들어, BaseMesh라는 스태틱 매시 컴포넌트를 하나 생성하면, 루트 컴포넌트에 연결할 수 있다. 왜냐면 스태틱 메시 컴포넌트는 씬 컴포넌트 클래스에서 파생되었기 때문에 어태치먼트를 지원한다!
후에 만들 ProjectileSpawnPoint는 씬 컴포넌트가 적합하다-> 자체적인 트랜스폼이 있어 위치 및 회전이 있기 때문이다
결과로, 캡슐을 루트 컴포넌트로 할당 하고 나면, 루트 컴포넌트에서는 UCapsule 컴포넌트 클래스가 있고, UStaticMesh 컴포넌트인 BaseMesh와 TurretMesh가 있으며 UScene 컴포넌트인 ProjectileSpawnPoint가 있다.
DefaultSceneRoot가 설명했듯이 루트 컴포넌트 변수를 나타낸다
ComponentActor을 만들고 보면 컴포넌트쪽에 추가를 할 수 있는 버튼이 있다
C++의 UCapsule 컴포넌트 클래스에 해당하는 capsule collision을 추가해준다
주목할 점은 DefaultSceneRoot아래에 있다는 점이다. 이것은 이 씬 루트에 연결되어 있다는 것을 의미한다. 여기서 만약에 Capsule을 DefaultSceneRoot에 드래그 하면 이것이 루트 루트 컴포넌트가 된다. 루트 컴포넌트를 이 캡슐 컴포넌트로 재할당한 것이다.
Cube를 Shpere1에서 큐브를 구로 드래그앤드롭하면, 큐브를 구에 직접적으로 연결시킬 수 있다.
Capsule 컴포넌트를 루트로 하여 탱크와 터렛부분을 할당해준다. 터렛부분을 추가했을 땐 자동으로 탱크의 아래에 추가되었다