[Unreal]#8_Attach Gun Actor to Shooter Character
Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다.
"Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다.
Attach Gun Actor to Shooter Character via Socket
개별적으로 생성한 Gun Actor를 "Socket"을통해 Character에 Attach 하는 방법에 대해 알아보겠습니다.
1. Mesh -> Skeleton Tree에서 Gun Actor가 들어갈 위치 확인
1. Character의 Animation Bluprint의 에디터 창을 엽니다.
2. 오른쪽 상단, "Mesh" 정보를 엽니다.
3. Gun에 해당하는 Skeletal Tree의 이름 정보(FName)를 확인합니다. 여기선 "weapon_r"입니다.
2. Character Mesh 중 Gun Mesh에 해당하는 Bone을 숨깁니다.
GetMesh()->HideBoneByName(TEXT("weapon_r"), EPhysBodyOp::PBO_None);
void USkinnedMeshComponent::HideBoneByName(FName BoneName, EPhysBodyOp PhysBodyOption) ?
: SkinnedMeshComponent 클래스의 "HideBoneByName()" 메서드는 특정 Bone의 이름을(FName)을 인자로 넘겨 해당 Bone을 숨깁니다.
"GetMesh()"를 통해 Character가 갖는 Mesh를 가져와 "HideBoneByName()" 메서드를 호출해 Gun Mesh가 들어갈 Skeleton의 Bone 자리(미리 설정된 Gun Mesh의 위치)를 숨겨줍니다.
3. Skeleton Tree에서 Gun Mesh 자리에 Socket을 추가합니다.
1. Animation Blueprint 에디터 창을 열어 오른쪽 상단의 "Mesh"를 엽니다.
2. Skeleton Tree에서 Gun Mesh가 들어갈 자리를 찾아서 *Socket을 추가합니다.
* Socket?
: 말 그대로 다른 Mesh와 Skeleton을 연결할 Plug 역할을 해줍니다.
4. Gun Actor를 Socket과 연결합니다.
// BeginPlay() 내부...
Gun->AttachToComponent(GetMesh(), FAttachmentTransformRules::KeepRelativeTransform, TEXT("WeaponSocket"));
void AActor::AttachToComponent(USceneComponent* Parent, const FAttachmentTransformRules& AttachmentRules, FName SocketName) ?
: Actor 클래스가 제공하는 메서드로, Actor의 Root Component(Scene Component)를 특정 컴포넌트에 Attach 합니다. 선택적으로 "Socket Name"을 활용할 수 있습니다.
* 주의 : 등록되지 않은 컴포넌트에선 호출될 수 없습니다! 따라서, 해당 메서드를 생성자가 아니라, BeginPlay() 내부에서 호출합니다.
"AttachToComponent()"를 통해 Actor의 Root Component(여기선 Scene Component)를 특정 Component에 Attach 합니다.
여기서 우린 미리 생성한 "Socket"의 이름(FName)을 통해 Attach 동작을 수행하겠죠!
5. Gun Actor의 Owner 설정
Gun->SetOwner(this);
* void AActor::SetOwner(AActor* NewOwner) ?
: Actor의 Owner를 설정합니다!
결과 화면
'게임개발 > Unreal C++' 카테고리의 다른 글
[Unreal]#9-2_Shooting 설계 및 구현 (0) | 2022.08.20 |
---|---|
[Unreal]#9-1_Shooting 설계 및 구현 (0) | 2022.08.17 |
[Unreal]#7_Spawn Gun Actor in Runtime (0) | 2022.08.12 |
[Unreal]#6_Gun Actor Setting (0) | 2022.08.11 |
[Unreal]#5_Character의 이동 속도와 각도 구하기, Animation Blueprint (0) | 2022.08.10 |