【UE4 C++】第三人称人物创建的基本代码(下)

前言

使用动画蓝图绑定过的任务的动画。

创建C++动画类

右键之后点击创建C++, 勾选 Show All Classes, 选择 AnimInstance。
然后我们后发现啥也没有;

我们开始往其中添加一些东西。
<.h文件>

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		float MovementSpeed;

角色移动速度变量。

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		bool IsJumping;

布尔变量,用来表示是否在跳的状态。

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		class APawn* Pawn;

获取主角指针,之后能够对角色是否在跳状态,或者其他属性做出判断。

virtual void NativeInitializeAnimation() override;
重载抽象初始化函数,这个函数在他的父类是没有实现的,就是用来重载的。

UFUNCTION(BlueprintCallable, Category = AnimationProperty)
		void UpdateAnimationProperties();

用来更新动画资源属性的函数,这里我们看到了一个新的宏UFUNCTION() 这个宏是对于函数而言的,BlueprintCallable表示它能在蓝图中被调用。

<.cpp文件>

  • 初始化操作就是将我们的角色指针弄出来。
void UMyAnimInstance::NativeInitializeAnimation()
{
	if (!Pawn) {
		Pawn = TryGetPawnOwner();
	}
}
  • 更新的话暂时只更新他的速度,和是否起跳状态。
    添加头文件:#include "GameFramework/PawnMovementComponent.h"
void UMyAnimInstance::UpdateAnimationProperties()
{
	if (!Pawn) {
		Pawn = TryGetPawnOwner();
	}
	
	if (Pawn) {
		FVector Speed = Pawn->GetVelocity();
		FVector LaterlSpeed = FVector(Speed.X, Speed.Y, 0);
		MovementSpeed = LaterlSpeed.Size();   // 获得他的横向速度

		IsJumping = Pawn->GetMovementComponent()->IsFalling();
	}
}

创建动画蓝图

右击我们刚创建的C++动画文件,点击创建蓝图。
Event Graph窗口中, 将蓝图按照这样连接:
在这里插入图片描述
让他每一帧都调用我们的更新人物状态的函数。

然后我们对人物的一些状态进行处理,让人物动起来吗,但是在这之前先要准备一个动画

创建一维混合动画

打开到创建蓝图的那个文件夹,右击空白处选择
在这里插入图片描述
创建一个一维混合动画。
找到左边的这个属性栏:

在这里插入图片描述
可以根据你的需求设置他的属性。

然后再资源浏览器中(我的是在右下角),分别找到闲置状态、走路状态、跑步状态的资源,对应拖入上图的是三个点钟中,这个时候我们移动那个绿色的点人物就会发生改变。

创建状态机

打开我们之前创建的动画蓝图类,右键添加一个状态机。
在这里插入图片描述
找不到这个窗口的,点击右下角在这里插入图片描述
就会出现了。

双击进入到状态机中,移动箭头创建一个状态,我们给他起名为Idle, 双击进入,按照下图创建,
在这里插入图片描述
那么这个状态就是代表的闲置状态走路状态跑步状态的混合状态。

回到上一层,从Idle状态继续创建一个新状态Jump_Start,代表起跳状态,进入状态把起跳的资源与输出动作连接起来。在这里插入图片描述
回到上一层,我们会发现箭头上面多了一个转化的箭头标志,双击进去,写入我们的逻辑,只有在跳的状态我们才会触发这个动作。
在这里插入图片描述

最后整个一套是这样的:
在这里插入图片描述
基本实现了我们角色的一些基本动画。
最后编译运行就可以啦!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值