Unreal Engine

재장전 애니메이션

Awesome Red Tomato 2023. 7. 21. 02:35

재장전을 할 때 탄창을 쥐고 주머니에서 교체하는 듯한 애니메이션을 만들고 싶다. 그러기 위해 쥐는 시점에 탄창의 위치가 손의 위치로 변하고 새 탄창을 끼워넣으면 탄창의 위치는 다시 총에 부착되면 된다.

 

크게 두 가지가 필요하다.

1. 손의 위치(Transform)

2. 떼어낼 Actor(무기)의 Bone(탄창)

 

먼저 애니메이션 몽타주를 생성하고 구간을 정해줬다.

 

Reload Montage

 

손의 위치는 GetWorldTransform으로 구해준다.

Hand_L의 Transform

 

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