재장전을 할 때 탄창을 쥐고 주머니에서 교체하는 듯한 애니메이션을 만들고 싶다. 그러기 위해 쥐는 시점에 탄창의 위치가 손의 위치로 변하고 새 탄창을 끼워넣으면 탄창의 위치는 다시 총에 부착되면 된다.
크게 두 가지가 필요하다.
1. 손의 위치(Transform)
2. 떼어낼 Actor(무기)의 Bone(탄창)
먼저 애니메이션 몽타주를 생성하고 구간을 정해줬다.
손의 위치는 GetWorldTransform으로 구해준다.
GrabClip 노티파이가 호출된 시점에서 탄창의 Transform을 왼손의 Transform에 Attach한다.
https://docs.unrealengine.com/5.2/en-US/API/Runtime/Engine/Engine/FAttachmentTransformRules/
FAttachmentTransformRules
Rules for attaching components
docs.unrealengine.com
void ACharacterBase::GrabClip()
{
if (EquippedWeapon == nullptr) return;
if (HandSceneComponent == nullptr) return;
// 탄창의 Transform
int32 ClipBoneIndex{ EquippedWeapon->GetItemMesh()->GetBoneIndex(EquippedWeapon->GetClipBoneName()) };
ClipTransform = EquippedWeapon->GetItemMesh()->GetBoneTransform(ClipBoneIndex);
// 탄창의 Transform을 Hand_L의 Transform으로
FAttachmentTransformRules AttachmentRules(EAttachmentRule::KeepRelative, true);
HandSceneComponent->AttachToComponent(GetMesh(), AttachmentRules, FName(TEXT("Hand_L")));
HandSceneComponent->SetWorldTransform(ClipTransform);
EquippedWeapon->SetMovingClip(true);
}
부착할 타깃(왼손)과 부착할 본(탄창)을 구했으니 부착한 채로 움직여주면 된다.
마지막으로 이 과정들을 Moving Clip일 때만 작동하게 블렌딩 해주면 끝.
'Unreal Engine' 카테고리의 다른 글
FABRIK (4) | 2023.07.28 |
---|---|
프레넬 효과 (0) | 2023.07.13 |
외곽선 하이라이트 (0) | 2023.07.13 |
총 쏘기 (0) | 2023.07.06 |
카메라 회전(+ 캐릭터 이동 수정) (0) | 2023.07.06 |