
같은방식으로 부모액터없이 CHelpers파일을 만들어주었다.
이는 Template를 사용하여,
컴포넌트 생성, 자산 로딩, 클래스 로딩 등의 반복적인 작업을 간편하게 처리하기 위한 유틸리티 클래스이다.

InActor : 컴포넌트를 추가 할 액터
OutComponent : 생성할 컴퍼넌트 (단, 주소로 받는다)
InName : 컴퍼넌트의 이름
InParent : 부모 컴퍼넌트
이전시간에 설명했듯이, CreateDefaultSubobejct라는 함수를 통해서 컴퍼넌트를 생성할 수 있는데(GC관리를 통해서)
Actor에 지정된 T(Class)타입으로 새로운 컴퍼넌트를 생성한다.
그 "생성한 컴퍼넌트의 주소"를 통해, 부모가 있으면 부모의 자식으로 들어가는 것이고
부모가없으면, 생성한 컴퍼넌트가 RootComponent로 들어가는 것이다.
그러면, 이를 이전에 만들었던 CPlayer에다가 활용을 할까?
<CPlayer.h>

우선, USpringArmComponent와 UCameraComponent는 CHelper의 템플릿에 들어가는 Class형 Type이다.

아 맞다! Global 헤더파일에, CHelpers을 추가해줘야 가져다가 쓸 수 있네요!
근데.. CHelpers 네임스페이스를 들고오지 못하네..
이유를 찾아보니까..

파일 경로문제였음!

1. CHelpers 네임스페이스를 들고와서,
2. CreateComponent템플릿을 통해
3. Header파일에서 생성한 컴퍼넌트의 주소를 받는다.
4. 현재 BP_Player엑터에,
5. CreateDefaultSubobejct로 생성한 주소값을 받아,
6. SpringArm이라는 이름으로
7. CapsuleComponent을 "Get"해서 해당컴퍼넌트의 자식으로 생성을 한다.
카메라도 마찬가지과정.
단 카메라는 위에 Name으로 "SpringArm"의 자식으로 생성한다는 것.
이렇게해서 나온 BP_Player의 생성한 두개의 컴퍼넌트들에대한 구조는

C++파일을 Ctrl+B로 저장을 해주고,
우리가 만들어준 BP_Player을 리로드해주고 실행하면!

구조가 나오게 되는 부분이다!

SpringArm에 들어가는 함수들이 블루프린트 내에 설정창에 다있음.
우리는 이것을 코딩으로 하는 거임.
SpringArm에 들어가는 기본적인 세팅을 한 것이다.