추후에 모션 컨트롤러와 폰 BP에 새로운 기능들이 추가되게 되면 굉장히 복잡한 BP가 된다. 따라서 모션 컨트롤러 자체를 별도의 클래스로, 별도의 블루프린트 클래스로 묶어서 관리해보자.
Actor을 상속받은 BP_Hand를 새로 만들어준다. 이때 해당 클래스틑 왼손, 오른손을 공용으로 활용할 예정이라서 Left, Right 구분 없이 하나만 만들어준다.
이제 왼손, 오른손을 구분하기 위해 bLeftHand라는 Bool 형식의 변수를 하나 선언해준다.
왼손 오른손인지의 변수 값에 따라 메쉬 설정, 회전 각도 설정, 모션 소스의 Left, Right를 설정한다. 이렇게 구현하면 굳이 왼손, 오른손 따로 구현할 필요가 없다.
bLeftHand 변수 Details에서 InstanceEditable과 Expose on Spawn을 체크해주어야지만 추후에 BP Hand Actor를 생성할 때 해당 변수를 직접 지정해서 생성할 수 있다.
이제 새로 만든 Hand를 받게 될 Pawn을 새로 만들어주자. 기존 폰은 이름을 BP_Pawn_legacy로 해주고, 폰을 상속받은 BP_Pawn을 새로 생성해준다.
계층 관계로 핸드를 붙여야한다. 따라서 Hand를 변수에 선언 해준 후에 BP_Hand를 연결시켜준다.
Sequence 노드 : pin 번호 순서대로 순차실행되도록 하는 노드 (S + 클릭으로 생성 가능)
SpawnActor BP Hand : BP Hand라는 Actor를 생성한다.
- 트랜스폼 지정 안해주면 오류나는데 우클릭 해서 Split하면 기본값이 들어가면서 오류가 해결된다.
Attach Actor To Component : Actor를 컴포넌트에다가 계층 구조처럼 연결시켜준다.
이게 월드 세팅에서 Default Pawn을 BP_Pawn으로 설정해준 후 실행시켜보다.
손이 잘 생성되서 왼쪽, 오른쪽 모션 컨트롤러에 설정된 것을 확인할 수 있다.