UE4添加人物动画之状态机

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

状态机

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

  1. 在 UE4 编辑器中,在右边的“Playing”右键点击 “新建C++类”。勾选显示所有类,以 AnimInstance 为父类创建一个名为 CharacterAnimInstance 的子类。

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

  3. 双击动画蓝图,点击类设置,然后在右边的细节面板的父类选项中选为我们刚刚创建的 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 编辑器双击我们的动画蓝图,选择动画图标,右键搜索machine,选中添加新状态机…,创建一个状态机,并双击状态机。

  2. 点击引脚拖动拉出来一个节点选择添加状态。

  3. 更改名字为 Idle 说明是静止状态,然后在 Idle 节点拉出一个 Move 节点表示是移动状态,然后再从 Move 节点拉回到 Idle 节点,构成一个状态切换流。

  4. 双击 Idle 节点,在右下角的资源浏览器中搜索 TwinSword_Idle_General,RootMotion 为 false 的动画,然后把这个动画拖到视图中连上输出节点。

  5. 编译保存,回到 UE4 编辑器的主视图中,点击播放,人物在播放刚刚的动画。

  6. 继续回到动画蓝图,我们点击 Move 节点,然后把 TwinSword_Walk 动画拖到视图里面。

  7. 点击返回,双击 Idle 到 Move 的变化规则。

  8. 在视图中右键鼠标输入 IsMove节点。

  9. 当这个节点大于 0.2 的时候就从 Idle 状态转换到 Move 状态,播放 Move 动画。在 IsMove 节点中拖出来一条线松开鼠标输入>号就可以显示大于号运算节点。

  10. 同理,双击 Move 到 Idle 的变化规则 ,当 IsMove 小于 0.2 的时候就从 Move 状态转换到 Idle 状态,播放 Idle 动画。

  11. 回到编辑器中,点击 play,前后左右移动可以播放 Move 状态的动画。

UE4开发六:人物动画相关推荐

  1. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第一篇:人物动画序列帧

    文章目录 一.前言 二.创建工程 三.导入序列帧图片素材 四.设置图片格式 五.切割序列帧 六.制作序列帧动画 七.运行效果 一.前言 嗨,大家好,我是新发,今天是大年初一,大家牛年快乐,牛气冲天. ...

  2. UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合

    前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发. UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fram ...

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

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

  4. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):目录

    本系列教程的示例代码下载(感谢 银光中国 提供资源分流): 第一部分源码:WPFGameTutorial_PartI(1-20节) 第二部分源码:WPFGameTutorial_PartII(21-2 ...

  5. ue4 开发动作游戏_《隐龙传》:首款UE4打造的国产动作游戏

    原标题:<隐龙传>:首款UE4打造的国产动作游戏 武侠风格的游戏一直以来是国内游戏市场的宠儿,从早期的端游时代到如今的手游时代,各类武侠大作可以说是层出不穷.但是在主机游戏平台,由于该类游 ...

  6. Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略、面试技巧以及学习笔记!!!

    前言 又到了每年的毕业季,应届毕业生在找工作过程对于简历设计和面试技巧有一定的欠缺,这对于求职是比较重要的两个因素,因此掌握一定的面试技巧对于找互联网技术岗位的工作帮助非常大.本篇文章给大家分享一波职 ...

  7. UE4 开发从入门到入土

    本文仅代表个人观点,与任何组织立场无关. 这是一篇引导性的文章,并不会涉及非常深度的解析,其目的并非全面否定这个引擎,而是在盲目跟风的潮流中让并不是很了解这个引擎的人率先了解这个巨大的引擎中存在的史诗 ...

  8. 使用UE4开发VR项目_性能优化(一)_常用工具

    原作者:Mullin-ぼくリん <使用UE4开发VR项目-性能优化>系列文章将分成三篇分别介绍使用UE4开发VR项目的一些工具使用和VR优化思路.目的是总结UE4开发VR项目中常用的一些调 ...

  9. 3D人物动画如何制作?DAZ Studio 4来帮你!

    3D人物动画制作工具-DAZ Studio 4.使用DAZ Studio 4 Mac破解版,用户可以自由选择虚拟人物,动物,道具,车辆,配件,环境等元素,只需要设置好相应的效果或者动作就可以完成制作了 ...

  10. UE4 开发之实现按钮事件响应

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 HelloWorld杰少 即可关注. 前言 电子游戏对大家来说应该是熟悉的不能再熟悉的东西了,现在游戏已经慢慢的成为了大家生活中不可或 ...

最新文章

  1. Get 了滤镜、动画、AR 特效,速来炫出你的短视频开发特技!
  2. 教你打造一道超级防御的电脑防火墙
  3. 百果园付凌峰:线上单月 1.2 亿背后的数据化运营
  4. PLSQL的表窗口开启(不小心把PLSQL的表窗口关了,在哪里打开)
  5. 微信昵称可以加特效啦!
  6. 一位在项目上的好友求助
  7. 【公测】智能便捷稳定 新版家园只为给你不一样的体验~
  8. Python动态数据展示
  9. 编码基本功:工作中,大多数人不会举一反三
  10. 雪亮工程整体解决方案
  11. 使用DeskPins工具钉住窗口
  12. 信号的平移和尺度变换matlab,基于matlab的信号与系统实验指导
  13. 数值计算实验1 Matlab基础实验
  14. 把Maven本地仓库修改为阿里云仓库
  15. 颜料和调色入门经典教程(调色表)
  16. mysql数据库复合索引
  17. P4315 月下“毛景树” (树链剖分)
  18. 为什么要用企业邮箱?企业邮箱能给公司带来哪些好处?
  19. Winter Camp I (下)
  20. 虚拟机服务器怎么安装驱动程序不正常怎么办,虚拟机安装不上虚拟网络驱动怎么处理...

热门文章

  1. 2021年苹果手机绕ID解锁教程-附使用工具
  2. viper4android xml,ROM 定制图文教程 ROM 制作深度解析(新手适用)
  3. CAM是利用计算机,利用DroidCam将手机摄像头打造成计算机摄像头
  4. DroidCam使用安卓手机当电脑摄像头
  5. masm5安装教程_小编为你演示win7系统使用masm5 0的操作步骤【详细说明】的恢复步骤...
  6. 搭建1078部标流媒体服务器
  7. 无线通信设备安装工程概预算编制_如何编制膜结构工程安装方案?
  8. 邮件营销的5个关键数字
  9. 常用软件问题四则希望对大家有帮助
  10. 苹果id登录_英雄联盟手游是用苹果ID好还是拳头好 账号选择建议_英雄联盟手游...