学习UE4官方第三人称模板中的内容

目标

当创建新的项目时,可以选择第三人称模板。其中自带了一个人物的骨骼模型以及控制它的逻辑。其中还有教程链接学习UE4官方第三人称模板中的内容
本篇的目标是,从教程中学习,在新的空白的工程中建立起一个有相同功能的可控制角色。

0.美术资源准备:骨骼模型以及动画

由于这个教程的时间是2014年,其中用到的资源似乎已经失效了。因此我决定从现有的第三人称模板中导出需要的资源:
学习UE4官方第三人称模板中的内容
需要导出的UAsset有:

1)1个骨骼模型:

学习UE4官方第三人称模板中的内容
会得到SK_Mannequin.FBX,使用blender打开会发现其中是一个带绑定的骨骼模型:
学习UE4官方第三人称模板中的内容

2)7个动画序列

学习UE4官方第三人称模板中的内容
得到7个fbx文件,其中都是骨骼动画(不带模型):
学习UE4官方第三人称模板中的内容

1.新建空白工程,导入资源

新建工程,选择空白模板
学习UE4官方第三人称模板中的内容
之后开始导入资源:

1)导入骨骼模型

导入SK_Mannequin.FBX
之后除了骨架网络体(Skeletal Mesh)物理资源(Physics Asset)骨架(Skeleton)应该都会被自动创建。
学习UE4官方第三人称模板中的内容

2)导入动画

导入7个fbx动画。需要注意的时候导入选项中选择刚才创建的骨架
学习UE4官方第三人称模板中的内容

2. 创建“混合空间(Blend Space)”

“混合空间”表示该怎么混合动画,1维混合空间表示由1个值驱动的动画混合。
例如,由速度来驱动的待机步行跑步之间的混合:
学习UE4官方第三人称模板中的内容

1)创建一个混合空间1D资源:

学习UE4官方第三人称模板中的内容
选择骨架:
学习UE4官方第三人称模板中的内容
创建的出的资源我命名为Blend_Idle_Walk_Run
学习UE4官方第三人称模板中的内容

2)编辑

双击便可以打开UE4的动画编辑器窗口中的动画序列编辑模式
学习UE4官方第三人称模板中的内容
基本的操作方式是:首先在右下角的资源浏览器中选择想要编辑的动画序列。之后在左侧的资源详情中可以看到细节的参数;而下方的面板中包含了一些预览用的操作。

选择Blend_Idle_Walk_Run,在资源详情中编辑其参数,将混合的参数名字设置为Speed,并且指定其值的范围是0375
学习UE4官方第三人称模板中的内容
其中Number of Grid Divisions表示分段,当前是4表示为分为四段。下面,将Idle动画拖到0.0的位置,将Walk拖动到1/4的位置,将Run拖到1.0的位置:
学习UE4官方第三人称模板中的内容
拖动下面的预览点,可以预览混合的情况:
学习UE4官方第三人称模板中的内容

3. 动画蓝图

动画蓝图中包含了驱动角色动画的逻辑。在当前,其实只是需要处理走动跳跃之间的逻辑,其状态机可以表示为如下:
学习UE4官方第三人称模板中的内容
图中的“locomotion”表示走动,具体由Blend_Idle_Walk_Run混合出来。

1)创建动画蓝图

学习UE4官方第三人称模板中的内容
选择AnimInstance作为父类,之后选择目标骨架。
学习UE4官方第三人称模板中的内容
我将其命名为MyCharacterAnimBP
学习UE4官方第三人称模板中的内容

2)编辑AnimGraph

双击动画蓝图资源,打开了UE4的动画编辑器窗口中的动画蓝图编辑器
学习UE4官方第三人称模板中的内容
随后双击AnimGraph,便可以对AnimaGraph进行编辑:
学习UE4官方第三人称模板中的内容
首先,创建一个状态机。其中将包含着能输出结果的逻辑。
学习UE4官方第三人称模板中的内容
关于状态机的详细操作,可见《状态机总览 | Unreal Engine Documentation》
最终,状态机的连接如下:
学习UE4官方第三人称模板中的内容

  • 对于OnTheGround
    它输出了Blend_Idle_Walk_Run的结果,以Speed这个变量作为参数,这个变量会由之后的事件图表中得到。
    学习UE4官方第三人称模板中的内容
  • 对于Jump_StartJump LoopJump_End 都是直接播放了动画:
    学习UE4官方第三人称模板中的内容
    要注意,对于Jump_StartJump_EndLoop Animation设置为false
  • 对于OnTheGround -> Jump_Start
    根据IsInAir的值来进行判断:
    学习UE4官方第三人称模板中的内容
  • 对于Jump Loop -> Jump_End
    也是根据IsInAir的值来进行判断,不过取反:
    学习UE4官方第三人称模板中的内容
  • 对于Jump_Start -> Jump LoopJump_End -> OnTheGround,都是根据动画所剩的时间来判断,如果时间小于0.1就判断为进入转换。
    学习UE4官方第三人称模板中的内容

也就是说,为了保证能运行,需要设置SpeedIsInAir变量。
学习UE4官方第三人称模板中的内容

3)编辑事件图表

学习UE4官方第三人称模板中的内容
基本上,就是从Pawn那里获得速度,赋值给Speed,从Movement Component那里获得角色是否在下降(Is Falling),赋值给IsInAir

4.设置输入映射

打开项目设置输入,映射一下按键的输入:
学习UE4官方第三人称模板中的内容

5.角色蓝图

1)创建角色蓝图

学习UE4官方第三人称模板中的内容
选取Character为父类
学习UE4官方第三人称模板中的内容
我将其命名为MyCharacter
学习UE4官方第三人称模板中的内容

2)编辑蓝图的组件

选择Mesh这个组件:

  • 设置好骨骼模型
  • 将其脚部移动到胶囊体的底部
  • 旋转面向箭头的位置
  • Anim Class设置为之前创建的动画蓝图

学习UE4官方第三人称模板中的内容
添加SpringArm组件,将Use Pawn Control Rotation设置为true
然后增加相机组件在SpringArm组件层级之下。
学习UE4官方第三人称模板中的内容
编辑角色蓝图的默认属性:Use Controller Rotation Yawfalse
学习UE4官方第三人称模板中的内容

3)编辑蓝图的输入

基本上,就是获取输入用户输入,然后进行处理。
学习UE4官方第三人称模板中的内容

6.创建游戏模式

1)创建游戏模式的蓝图

选择父类为GameMode
学习UE4官方第三人称模板中的内容
创建的资源命名为MyGame
学习UE4官方第三人称模板中的内容
双击这个资源,可以直接设置其默认值,将默认的Pawn类设置为MyCharacter
学习UE4官方第三人称模板中的内容

2)随后,打开关卡的World Settings

学习UE4官方第三人称模板中的内容
GameMode Override设置为MyGame
学习UE4官方第三人称模板中的内容

7.测试

点击学习UE4官方第三人称模板中的内容最终测试符合预期:
学习UE4官方第三人称模板中的内容

问题

  • 角色感觉左肩缺了一块,还没查明是为什么
  • 官方教程中,其实后续还有加入挥拳动作,和动画蒙太奇相关的内容,待学习。