UE4添加人物动画之状态机

这一节我们创建一个动画蓝图并在C++中把它绑定到角色身上 。

状态机

状态机是可以让动画过渡到另一个动画的工具,它大大简化了动画设计流程。

  1. 在 UE4 编辑器中,我们以 AnimInstance 为父类创建一个名为 CharacterAnimInstance 的子类。

  1. 进入到我们的骨骼网格体文件夹路径,右键选择该资源,创建一个动画蓝图。

  2. 双击动画蓝图,点击类设置,然后在右边的细节面板的父类选项中选为我们刚刚创建的 CharacterAnimInstance。


  1. 回到 VS 编辑器,在 PlayingCharacter.CPP 文件中添加头文件并把动画的动画蓝图设置成编辑器中创建的动画蓝图。

要添加的头文件:

#include "ConstructorHelpers.h"
#include "CharacterAnimInstance.h"

在构造函数中添加:
注意,由于我们添加的资源是一个类,所以我们要在资源路径的后面加上_C。

//指认动画蓝图
static ConstructorHelpers::FClassFinder<UCharacterAnimInstance> AnimInstance( TEXT("AnimBlueprint'/Game/TwinSwordAnimsetBase/UE4_Mannequin/Mesh/UE4_Mannequin_Skeleton_AnimBlueprint.UE4_Mannequin_Skeleton_AnimBlueprint_C'") );
//判断资源是否存在
if (AnimInstance.Succeeded()) {//赋值GetMesh()->SetAnimInstanceClass(AnimInstance.Class);
}
  1. 打开 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;
};
  1. 在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();}
}

这一节就到这里,下一节我们会在状态机中使用这些变量并设置动画。

UE4添加人物动画之状态机相关推荐

  1. UE4添加人物摄像机

    UE4添加人物摄像机 在这一节中,我们需要添加两个组件分别是摄像机弹簧臂组件和摄像机组件. 摄像机弹簧臂组件 摄像机弹簧臂组件,可以想象成是我们的手臂和手.手拿着摄像机,当我们想移动摄像机的时候,我们 ...

  2. android添加人物动画效果,android – RecyclerView:如何创建插入动画效果?

    下面是我在适配器中添加动画的方法.这将使推动效果生动,行从右侧进入. 首先在xml中定义动画(res / anim / push_left_in.xml) android:duration=" ...

  3. android添加人物动画效果图,Android编程根据系列图片绘制动画实例总结

    本文实例讲述了Android编程根据系列图片绘制动画的方法.分享给大家供大家参考,具体如下: 一.采用系统提供的Animation类,用自带的方法 其中的animation.xml文件如下: Anim ...

  4. 用状态机做人物(AI)的状态切换以及动画效果——人物动画以及切换

    github: https://github.com/lucaschen1993/PRG_DEMO 前言 在之前写状态机文章的时候介绍过,基于事件与委托实现的状态机.这篇文章将介绍状态机的使用,以及人 ...

  5. Unity Animation从UAS获取动画资产到编制状态机控制简单的人物动画

    Animation 动画 0.前言 这个笔记用于讨论在Unity中开发游戏时使用动画的相关知识. 这个笔记最终期望能够达到:在Unity的Demo中展现一个人物,其能够进行类似挥拳.开门的具体动作. ...

  6. UE4 Sequence添加基础动画效果 (03-主序列的使用)

    在上一篇的基础上添加一些摄像头的跟拍效果 效果: 步骤: 1.鼠标右键新建 Animation->关卡序列 命名为主序列 2.双击打开主序列 3.点击 窗口->内容浏览器->内容浏览 ...

  7. unity 添加人物控制器行走动画

    效果:上下左右 控制人物行走 1.添加人物模型,(一个双臂张开的稻草人一动不动地矗在那) 2.给人物添加animator组件,并双击编辑 3.拖入人物的站立,行走,跑动等姿势,并建立关联,右键make ...

  8. ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4

    ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G ...

  9. unity人物旋转移动代码_游戏诞生之日02 - 美术篇 快速制作人物动画

    在上一篇<游戏诞生之日01 - 美术篇 快速搭建和渲染游戏的第一个场景>里,我们得到了一个静态渲染的游戏场景. 接下来我们需要加入人物动画,为游戏注入活力. 第五块拼图 - 动画素材从哪里 ...

  10. unity 游戏内实现3连击动画(状态机)

    上节课讲了unity 游戏内实现3连击动画的实现,因为在游戏中我们的连击动画可能会有很多,为了避免使用较多的if  else 我们这节课开始引用状态机来更好的实现效果,那么接下来我们就开始状态机的讲解 ...

最新文章

  1. FIRST集与FOLLOW集构造步骤
  2. 配置PIM auto-rp
  3. [Python语音识别项目笔记] 2矩阵标准化和去标准化
  4. 2.3.3 浮点数的加减运算与强制类型转换
  5. spray.json.JsonParser$ParsingException: Unexpected end-of-input at input index
  6. SSH开发中 使用超链接到action 其excute方法会被执行两次 actual row count: 0; expected: 1...
  7. android条形图,MPAndroid组条形图未显示
  8. 数组copyWithin()方法以及JavaScript中的示例
  9. Android内存泄漏的各种原因详解
  10. excel python自动化_excel表自动化-python
  11. mc穿越时空地图android,我的世界RPG地图穿越时空地图存档下载
  12. 同林多域共用一台Exchange
  13. Animator忽视TimeScale
  14. 单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造
  15. tensorflow之矩阵相乘与matmul
  16. ——黑马程序员——OC中Foundation下NSFileManager的使用
  17. 组建团队和调整团队结构
  18. 团队建设的不同阶段与管理方式
  19. mysql 打开mdf文件怎么打开_mysql数据库 mdf文件怎么打开
  20. python使用smtplib群发工资条的两种方式(及群发只成功一条的问题)

热门文章

  1. matlab设计理想带通滤波器 bpf(f_sf_b1_b2),QDPSK信号数字化解调器中带通滤波器的设计与仿真...
  2. 微型计算机原理实验二,微型计算机原理与接口技术实验指导(第2版)
  3. 6.5 使用快捷键快速调整图表线条的宽度 [原创Excel教程]
  4. 计算机无法删除ie,ie删不掉的原因及解决方法【图解】
  5. 45% 72% 100sRGB 色域
  6. java resourcebundle_Java中使用ResourceBundle访问资源文件(properties文件) | 学步园
  7. 怎么样把书上的字很快的弄成电子版,哈哈,我也会了
  8. Server2008 安装 Zune
  9. 浅析欢乐时光(HAPPY TIME)病毒
  10. JavaWeb(二)Servlet和JSP简介