애니메이션 관련 처리를 할 Anim Instance를 만들어보자
C++클래스로 아래와 같이 AnimInstance를 상속받으면 된다.
UCLASS()
class TESTUNREALENGINE_API UMyAnimInstance : public UAnimInstance
{
GENERATED_BODY()
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
private:
// 멈춰있다가 뛰어가면 애니메이션을 넣어볼 예정
// speed정보가 필요하다
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Pawn, Meta=(AllowPrivateAccess=true))
float Speed;
};
여기까지하고 UMyAnimInstance와 연결시킬 블루프린트를 생성해보자
다시 현재 사용중인 Default Pawn의 블루프린트 애니메이션을 위에서 생성한 블루프린트로 지정하자
속도값이 0보다 클경우 작을경우 확인 후 상태에 따라 Anim지정
이제 Speed값을 움직임에 따라 연결만하면 된다.
void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
auto pawn = TryGetPawnOwner();
if (IsValid(pawn))
{
Speed = pawn->GetVelocity().Size();
}
}