UE4 C++ Character的动画(C++类)

UE4 C++ Character的动画(C++类)

Character类C++的蓝图类

在这里插入图片描述

再建一个继承AnimInstance的C++类
在这里插入图片描述

继承AnimInstance的C++类的代码:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "MainPlayerAnimInstance.generated.h"

/**
 * 
 */
UCLASS()
class GETSTARTED_API UMainPlayerAnimInstance : public UAnimInstance
{
	GENERATED_BODY()

public :

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation Properties")
		float Speed;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation Properties")
		bool bIsInAir;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation Properties")
		 class AMyinPlayer* PlayerRef;

public:

	virtual void NativeInitializeAnimation() override;

	UFUNCTION(BlueprintCallable,Category="Animation Properties")
	void UpdateAnimationProperties();


	
};

// Fill out your copyright notice in the Description page of Project Settings.


#include "Characters/Player/MainPlayerAnimInstance.h"
#include "Characters/Player/MyinPlayer.h"
#include "GameFramework/CharacterMovementComponent.h"

void UMainPlayerAnimInstance::NativeInitializeAnimation()//这个就是一开始运行就会调用的
{
	//这个是蓝图里面的“尝试获取Pawn拥有者”  因为他不知道PlayerRef是AMainPlayer类,所以要Cast 转换一下
	PlayerRef = Cast<AMyinPlayer>(TryGetPawnOwner());

	
}

void UMainPlayerAnimInstance::UpdateAnimationProperties()
{
	if (PlayerRef == nullptr) {
		PlayerRef = Cast<AMyinPlayer>(TryGetPawnOwner());
	}

	if (PlayerRef) {
		FVector SpeedFvector = PlayerRef->GetVelocity();//获取一个它的速度
		FVector PlanarSpeed = FVector(SpeedFvector.X, SpeedFvector.Y, 0.0f);
		Speed = PlanarSpeed.Size();//一个大小,长度 ,就是获取向量的长度

		bIsInAir = PlayerRef->GetMovementComponent()->IsFalling();//是否正在坠落
		
	}
}

再建一个继承这个C++的蓝图动画类:
在这里插入图片描述

再写状态机
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li~蒙一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值