UE4添置人物动画之状态机
发布时间:2022-07-16 12:11 所属栏目:51 来源:互联网
导读:这一节我们创建一个动画蓝图并在C++中把它绑定到角色身上 。 状态机 状态机是可以让动画过渡到另一个动画的工具,它大大简化了动画设计流程。 1) 在 UE4 编辑器中,我们以 AnimInstance 为父类创建一个名为 CharacterAnimInstance 的子类。 2) 进入到我们的
这一节我们创建一个动画蓝图并在C++中把它绑定到角色身上 。 状态机 状态机是可以让动画过渡到另一个动画的工具,它大大简化了动画设计流程。 1) 在 UE4 编辑器中,我们以 AnimInstance 为父类创建一个名为 CharacterAnimInstance 的子类。 2) 进入到我们的骨骼网格体文件夹路径,右键选择该资源,创建一个动画蓝图。 3) 打开 CharacterAnimInstance.h 添加两个变量,并把这两个变量公开到蓝图中,让蓝图可以编辑,然后继承 NativeUpdateAnimation 函数,这个函数会每帧更新我们的变量属性。 /** * //角色动画蓝图 */ UCLASS() class GAMEPROJECT_API UCharacterAnimInstance : public UAnimInstance { GENERATED_BODY() protected: virtual void NativeUpdateAnimation(float DeltaSeconds) override; //判断人物有没有移动 UPROPERTY(BlueprintReadOnly) float IsMove; //判断人物有没有跳跃 UPROPERTY(BlueprintReadOnly) bool IsJump; }; 6) 在CPP文件中添加 PlayingCharacter.h 和 GameFramework/CharacterMovementComponent.h 并实现这些变量。 #include "CharacterAnimInstance.h" #include "PlayingCharacter.h" #include "GameFramework/CharacterMovementComponent.h" void UCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) { Super::NativeUpdateAnimation(DeltaSeconds); //TryGetPawnOwner() 返回的是一个Pawn类,它通过骨骼模型组件返回指认了它的角色,然后再把返回的Pawn转换成我们想要的角色 APlayingCharacter* Character = Cast<APlayingCharacter>(TryGetPawnOwner()); if (Character) { //GetVelocity() 返回的是角色的移动组件的速度,如果这个值大于0说明Character在移动,Size() 是获取向量的模 IsMove = Character->GetVelocity().Size(); //IsFalling() 如果角色当前正在下降就返回真 IsJump = Character->GetCharacterMovement()->IsFalling(); } } 这一节就到这里,下一节我们会在状态机中使用这些变量并设置动画。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读