티스토리 뷰

반응형

캐릭터에 애니메이션을 추가해주기 위해서 AnimInstance를 만들고, 만든 AnimInstance를 상속받은 애니메이션 블루프린트를 만들어서 캐릭터와 연결시켰다.

애니메이션 블루프린트에서 상태를 추가해 준 후 값을 연결시켜줬지만, 애니메이션이 실행되지 않았다. 

생각해보니 애니메이션 블루프린트에서 가져오는 Speed값과 Direction값을 셋팅해주는 부분이 없기 때문이었다. 

 

 AnimInstance.h 파일을 찾아보면 NativeUpdateAnimation 함수를 찾아볼수 있다.

// Native update override point. It is usually a good idea to simply gather data in this step and 
// for the bulk of the work to be done in NativeUpdateAnimation.
virtual void NativeUpdateAnimation(float DeltaSeconds);

이 함수를 재정의 하여 이곳에서 Speed와 Direction값을 셋팅해주는 코드를 추가하였다.

void UMyPlayerAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	AMyPlayer* Pawn = Cast<AMyPlayer>(TryGetPawnOwner());

	if (Pawn && Pawn->IsValidLowLevel())
	{
		Speed = Pawn->GetCharacterMovement()->Velocity.Size();
		Direction = CalculateDirection(Pawn->GetCharacterMovement()->Velocity, Pawn->GetActorRotation());
	}
}

이렇게 추가를 해주면 애니메이션이 업데이트 될때마다 캐릭터의 스피드를 애님인스턴스의 Speed값으로 셋팅해주고, 방향을 Direction값으로 셋팅해주기 때문에 애니메이션 블루프린트에 값이 들어가고, 적절한 애니메이션이 실행되게 된다.

반응형
댓글