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

Posted Vincent_0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
	}
}

更新的话暂时只更新他的速度,和是否起跳状态。

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,代表起跳状态,进入状态把起跳的资源与输出动作连接起来。
回到上一层,我们会发现箭头上面多了一个转化的箭头标志,双击进去,写入我们的逻辑,只有在跳的状态我们才会触发这个动作。

最后整个一套是这样的:

基本实现了我们角色的一些基本动画。
最后编译运行就可以啦!

以上是关于UE4 C++第三人称人物创建的基本代码(下)的主要内容,如果未能解决你的问题,请参考以下文章

UE4 C++设置攻击间隔面向敌人攻击

UE4 C++简易背包系统(上)

UE4 第三人称Game制作

AdvancedLocomotionSystemVC++ 实现人物移动

斯坦福UE4 + C++课程学习记录 18:十字准星

ESRPG C++ 操控主角移动