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++第三人称人物创建的基本代码(下)的主要内容,如果未能解决你的问题,请参考以下文章