본문 바로가기

언리얼엔진/ThirdPersonTemplete

언리얼 Animation Montage

ABP_Move안의 AnimGraph에 다음과 같이 Layerd blend per bone을 추가한다. cache로 검색해서 SavePose와 Use cached pose도 추가한다. Use Pose는 2개를 추가해 Slot Defalt Slot을 추가한다. 이건 C++에서 이용할 Montage의 변수같은거다.

TPSPlayer.cpp C++에 코드를 추가한다. 공격하는 순간이므로 InputFire에 일단 추가한다.

void ATPSPlayer::InputFire(const FInputActionValue& Value)
{
	if (fireReady)
	{
		GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Magenta, TEXT("Fire"));
		UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
		if (AnimInstance)
		{
			GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Magenta, TEXT("attackAnim"));
			AnimInstance->Montage_Play(attackAnimMontage);
		}

		fireReady = false;
	}
}

Animation폴더 위에 우클릭하고 Animation Montage를 만든다. 이름은 C++코드와 같지 않아도 상관없다  BP_TPSPlayer에서 리플렉터를 이용해 설정할 거니까.

Asset Browser에서 적당한 애니메이션을 골라 트랙에 끌어다 놓는다.  혹시 동작이 길다면 공격 애니메이션을 복제해 시간을 짧게하고 지정해주면된다. 

이제 공격  Montage를 만들었으니 이걸 섞어보겠다 일단 사용할 캐릭터의 Skeleton Tree를 열어주고 spine_01우클릭해 이름을 복사한다.

ABP_Move를 열어 AnimGraph에서 Layerd blend per bone을 클릭해서 오른쪽  Detail

오른쪽  Detail Layer Setup의 Branch Filters를 추가해주고 Bone Name에 조금전 카피한 이름을 복사해준다.

BP_TPSPlayer를 열어 디테일에서 Montage를 찾아  attackMontage를 지정해준다.

플레이해보면 이동하면서 공격동작을 동시해 할수 있다 물론 하체가 좀 부자연스럽다. 

'언리얼엔진 > ThirdPersonTemplete' 카테고리의 다른 글

스폰한 캐릭터 안움직이는 이유  (0) 2023.12.04
AnimNotify  (0) 2023.11.16
캐릭터 메시 지정하기  (0) 2023.11.13
PBullet 발사체 만들기  (1) 2023.11.13
프로젝트 만들기 - TPSPlayer  (0) 2023.11.13