当前课程知识点:虚幻引擎(UE4)技术基础 > 第七章 动画系统 > 7.4 创建自定义角色 > 7.4 创建自定义角色
大家好
欢迎大家来到虚幻引擎技术基础
第七章动画系统的课程
我是主讲教师危熹
在今天的课程中
我们将学习最后一个小节
创建自定义角色
在本课中
我们会学习如何创建自定义角色
以及怎么去设置自定义角色的参数
以便让我们的自定义角色
能应用到引擎场景中
那么接下来
我们就一边进行操作一边进行讲解
前面的课程
我们已经学习了
如何编辑修改动画
那么我们的自定义动画已经准备就绪了
接下来
我们需要一个可以应用它的骨骼网格体
以及实际使用动画的角色
在" My Content"文件夹空白处
点击右键
选择“蓝图类”
“角色”
将它命名为“My Character”
然后打开它
这里有一些需要注意的内容
最主要的是“Mesh”
这是我们会显示的网格体
也就是骨骼网格体
我们的示例中只有一个
在“细节”面板的
“骨骼网格体”中
选择“SK_Mannequin”
这就是骨骼网格体
在默认设置中
它的位置不太对
只是处在它设置的位置上
我们把它往下拖
这样稍微合适一点
大概80或90的位置
然后旋转-90度
我们要让这个标明角色面朝方向的蓝色箭头
和人形角色的面朝方向一致
这就行了
接下来是“动画”
我们需要重点关注两种不同的动画模式
一种是蓝图另一种是资源
现在选择“动画资源”
“要播放的动画”
然后选择一个动画比如闲置动画
角色现在就在播放闲置动画
我们也能看到他的闲置动画
从“内容浏览器”中
将他拖入主界面的关卡中
就有了“My Character”
以及这个模板自带的
默认第三人称角色
为了方便演示
我们将场景中的第三人称角色删除
也可以将“Network Player Start”删除
也就是这个
这样我们就只会使用自己的角色
现在点击“运行”
我们会发现没有任何改变
那是因为我们没有告诉系统
要使用这个角色
现在来设置一下
在角色的“细节”面板中
向下滚动或者输入“Possess”
我输入了“POS”再滚动一下
找到“Pawn”下的“自动控制玩家”
将它设置为“玩家0”
这就是我们在这个场景中
控制的第一个玩家角色
现在点击“运行”我们就能控制他了
但我们并没有得到想要的效果
因为我们没有设置摄像机
所以它默认的位置
就在角色的中间
我们得完善这个角色
重新打开角色
我们要添加摄像机
添加一个“摄像机”组件
确保摄像机组件属于胶囊体组件
让它出现在网格体旁边
然后把它移动到想要的位置
找到摄像机
选中它使用平移工具移动它
将摄像机放到我们想要的位置
点击“运行”这就行了
但我们不能移动角色
而摄像机也是固定在这个位置的
我们得解决这两个问题
摄像机的问题很好解决
引擎中內置了“弹簣臂”
我们在“添加组件”中输入“弹簣”
就能找到“弹簣臂
我们将弹簧臂移动到胶囊体下
使它瞄准角色的胶囊体
然后将摄像机移动到弹簧臂下
然而它还是有些不太对劲
我们移动过摄像机现在要重置它
将摄像机的设置重置
弹簧臂也重置下
这样就能获得理想的设置
弹簧臂是胶囊体的子项瞄准了胶囊体
摄像机就在弹簣臂的未端
再次运行它
这个位置就比刚才好多了
我们将弹簧臂上移一点
这样就能看到后面的位置
点击“运行”测试一下
看起来是好多了
可我们还是动不了
因为我们使用的是第三人称模板
这里可以偷个懒
打开“内容”
“ThirdPersonBP ”
“Blueprints”文件夹
打开其中现有的
“ThirdPerson character”
我们将需要的部分复制过来
因为我使用的是键盘和鼠标
所以我选中了中间这部分
这部分框架负责查看周围
“Jump”负责跳跃
另一部分负责使用方向键来移动
我们不需要手柄
VR或触碰输入
因为这个例子里用不到它们
选中这些部分
复制它们然后打开
“My Character”
进入事件图表
我先选中了里面的所有内容
将它们删除让图表更清楚
现在点击右键并选择“粘贴”
或者直接Ctrl+V
就能将输入粘贴进来
你也可以在“编辑”中选择“粘贴”
有了这些之后
角色就能接受输入了
编译并保存
然后点击“运行”来测试一下
很好我现在可以用鼠标转动镜头
也可以前后左右地移动还能跳跃
但是没有播放行走跟跳跃动画
我们只看到了闲置动画
这是因为我们没有设置
我们只是简单地控制自己的角色
同时播放闲置动画
因为我们选择的固定动画
接下来我们就要使用动画蓝图
我们可以关闭角色
在内容浏览器中点击右键
找到“动画”
“动画蓝图”
在创建设置窗口中
我们不需要父类
因为我们不会继承任何东西
所以就使用默认无
还需要指定一个与动画蓝图绑定的骨骼
之前说过
我们会看到
和骨骼相关的所有蓝图
网格体和动画的列表
骨骼控制着开启和关闭的对象
这是我们的骨骼
点击确定
把它命名为
“My CharacterAnimBP”
我创建的文件夹位置不对
它还在“ThirdPersonBp中
我们要把它放到“My Content”文件夹中
这样比较规范
改起来很方便
我们点击它
把它拖进“My Content”中
然后移动它
这样就行了
“My CharacterAnimBP”
被放入了“My Content”文件夹
那么接下来
我就可以通过设置动画蓝图
制作更稳定的动画系统了
打开“My Character”
返回骨骼网格体
将动画模式改为“使用动画蓝图”
并指向我们要使用的“MyCharacterAnimBP”
编译并保存就行了
我们来测试一下
什么都没有发生
毕竟动画蓝图现在是空的
我们在“My Content”文件夹中
打开动画蓝图“MyCharacterAnimBP”
现在来看一看
这里有两个图表
左边有“事件图表”
我们可以双击打开它
这就是图表的代码
还有一个“Anim Graph”
这是我们播放的动画
我们可以像之前一样
播放动画
我们可以选择一个动画
比如闲置动画
将它拖入图表
和输出姿势连接起来
点击“编译”
你可以在视口中
或者左上角点击“编译”
它就会默认播放“ThirdPersonldle”动画
这很简单但我们想要控制它
在行走时播放行走动画
奔跑时播放奔跑动画
不移动时播放闲置动画
跳跃时播放跳跃动画
那该怎么做呢?
我们需要混合
我们要先了解混合的基本知识
点击右键
在许多蓝图中我们输入“混合”
这里有许多不同的混合
能混合各类姿势
在最上面有一个“Blend”部分
我们需要找到“混合”
它会将两个姿势混合到一起
我们可以将闲置动画和A输入连接起来
就能在闲置与行走之间混合
但这里有两个“ThirdPersonWalk”
我们需要哪一个呢
之前没有给僵尸动画重命名
所以现在补上
回到世界场景找到
“My Content”文件夹
将这个动画重命名为
“ThirdPersonWalkzombie”
返回动画蓝图
这里现在显示
“ThirdPersonWalkZombie”
将它拖进来和B连接到一起
就是这样
当然这里也得连起来
从混合中拖出连接到结果中编译一下
现在它会根据 Alpha的值
播放闲置或僵尸动画
Alpha为0就是A
Alpha为1就是B
每次我们进行更改都需要编译
待会就没有这个问题了
现在先编译
它开始播放僵尸动画了
如果值为0.5
就会播放一半的闲置动画
以及一半的行走动画
但它依然不会根据图表中的数据播放动画
我们需要设定行走的速度
我们要获取动画蓝图内部的信息
那么返回动画蓝图
我们该怎么输入数据呢
“Anim Graph”决定了播放的动画事件
图表决定了代码
或者输入与输出数据所需的流程
这是默认设置
有“事件蓝图更新动画”
以及运行的代码
需要更新动画时就会触发这些
这里还有“尝试获取Pawn拥有者”
这个节点会询问
我们要附加到哪个Pawn
正在运行哪个动画
你需要格外注意一点
因为这并不是一直准确的
当你在编辑器中预览时
你可能会察觉到怪异之处
预览的实例可能正在奔跑
你需要检查它是否有效
从“尝试获取Pawn拥有者”中拖出引脚
输入“Valid”
使用这个带有问号标志的“Is Valid”
把它们连起来
这很简单
如果缺少有效的Pawn拥有者
没有附加到任何有效的对象上
那就什么也不做
如果附加到了有效的对象上
那该做什么呢
我们要获取两个值
要模拟第三人称模板
要能跑能跳
我们需要获取移动的速度
以及是否处于跳跃状态
现在选中“尝试获取Pawn拥有者”
将它转换为“My Character”
这么做是因为虽然Pawn知道移动的速度
但它未必是一个角色
也不知道它是否正在掉落
而我们的角色是会掉落的
这是“My Character”
把它稍微整理一下
我们可以从“My Character”处获取数值
在这个示例中我们能需要两个值
一个是“速度”
一个是“是否在掉落”
这样才能知道角色是否正在跳跃
先从掉落入手
我们要在“As My Character”处
获取移动组件
在这里获取
“Character movement”
然后检查是否正在掉落
搜索“Is Falling正在掉落”
就是这个它知道我们是否正在掉落
这些接下来要用所以需要保存
我们将这些项保存在变量中
然后就能在动画图表中使用它们了
从“正在掉落”处拖出引脚
将它提升为变量
将变量命名为" Is Falling”
方便我们追踪
我们把它连起来
这样就能保存变量
留到以后使用
现在我们要获取移动的速度
我们可以从Pawn中直接获取
然后检查速度
而现在我们要获取角色
然后从中获取速度
速度本身是一个矢量
和我们想要的不太一样
我们想要的是速度的长度
它会通过虚幻引擎单位来显示移动速度
看
如果我们搜索“长度”它毫无反应
我们需要搜索“向量长度”
它就在“数学”部分下面
这会给我们个浮点值
作为我们的速度
现在拖出来
提升为一个变量
把它命名为“Speed”
把它连接起来就行了
这就是全部变量了
我们接下来
只需要这些“正在掉落”
会判断我们是否正在掉落
“Speed”决定了我们的速度
回到“Anim Graph”中
我们可以把速度连起来了
但是有一个问题你会发现
它现在要有一个“Alpha”
好在混合节点
拥有的不只是“Alpha”
在“细节”面板中还有“输入类型”
有“浮点值”
“布尔值”和“动画曲线值”
我们选择“布尔值”
就能插入一个布尔了
我们在左边框架中
把Speed拖拽过来
获取速度
检查当前的速度
是否超过某个数值
在我们的例子中就是大于0
0意味着我们没有移动
将它插入混合中
我们可以运行看一下效果
如果速度大于0
就播放行走动画
你可以看到当我们开始行走
1就开始播放行走动画了
0不行走时则会播放闲置动画
那么到这里我们就暂时做完了
所以混合真的非常好用
我们可以轻松混合两种动画
还有其它的混合
能让我们混合超过两种动画
但它们比较复杂
我们就不在这里讲
那么到这里我们就通过这个实例
讲解了虚幻引擎动画系统的一些知识
好了
今天我们的操作部分就讲到这里
接下来我给大家布置了几个问题
供大家思考
第一
如果你想在Anim Graph中
播放多个动画序列
那么可以使用哪个节点
第二
在动画蓝图的事件图表中
使用Is Valid节点有什么作用
第三
我们需要使用什么命令
才能通过简单的速度或方向值
让动画序列实现流畅转换
好
希望大家在课后
认真回顾本节内容及相关问题
那么本节课内容就讲解到这
希望大家学有所成
再见
-1.1 虚幻4引擎简介
--1.1 小节习题
-1.2 虚幻4引擎的安装及环境部署
--1.2 小节习题
-1.3 创建项目及试玩
--1.3 小节习题
-第一章 章节测试
-2.1 虚幻4编辑界面介绍01
--2.1 小节习题
-2.2 虚幻4编辑界面介绍02
--2.2 小节习题
-2.3 视口导航及基本操作
--2.3 小节习题
-2.4 导入资源、项目迁移和管理
--2.4 小节习题
-第二章 章节测试
-3.1 地形工具
--3.1 地形工具
--3.1 小节习题
-3.2 新建地形
--3.2 新建地形
--3.2 小节习题
-3.3 塑造地形
--3.3 塑造地形
--3.3 小节习题
-3.4 使用植被工具
--3.4 小节习题
-第三章 章节测试
-4.1 初识材质
--4.1 初识材质
--4.1 小节习题
-4.2 编辑基于物理材质
--4.2 小节习题
-4.3 使用贴图纹理创建材质
--4.3 小节习题
-第四章 章节测试
-5.1 大气照明和定向照明
--5.1 小节习题
-5.2 添加点光源
--5.2 小节习题
-5.3 添加聚光源
--5.3 小节习题
-5.4 光源质量和反射
--5.4 小节习题
-第五章 章节测试
-6.1 几何体及纹理贴导入
--6.1 小节习题
-6.2 素材整理和项目准备
--6.2 小节习题
-6.3 搭建流程
--6.3 搭建流程
--6.3 小节习题
-第六章 章节测试
-7.1 动画资源与编辑器
--7.1 小节习题
-7.2 混合空间
--7.2 混合空间
--7.2 小节习题
-7.3 动画窗口及编辑动画
--7.3 小节习题
-7.4 创建自定义角色
--7.4 小节习题
-第七章 章节测试
-8.1 创建粒子系统
--8.1 小节习题
-8.2 虚幻粒子基础功能介绍01
--8.2 小节习题
-8.3 虚幻粒子基础功能介绍02
--8.3 小节习题
-8.4 粒子特效的综合运用
--8.4 小节习题
-第八章 章节测试
-9.1 初识蓝图
--9.1 初识蓝图
--9.1 小节习题
-9.2 蓝图类型
--9.2 蓝图类型
--9.2 小节习题
-9.3 蓝图通信
--9.3 蓝图通信
--9.3 小节习题
-9.4 创建蓝图
--9.4 创建蓝图
--9.4 小节习题
-第九章 章节测试
-10.1 击中事件
--10.1 小节习题
-10.2 实现物体来回移动
--10.2 小节习题
-10.3 Input输入与玩家快捷键交互
--10.3 小节习题
-10.4 用户界面和HUD
--10.4 小节习题
-10.5 创建游戏约束
--10.5 小节习题
-10.6 游戏结束与重玩功能
--10.6 小节习题
-第十章 章节测试
-11.1 行为决策的AI
--11.1 小节习题
-11.2 AI监听玩家行为
--11.2 小节习题
-11.3 AI与玩家的攻击伤害
--11.3 小节习题
-11.4 AI生成点与随机巡逻
--11.4 小节习题
-11.5 优化游戏体验
--11.5 小节习题
-11.6 渲染及代码优化
--11.6 小节习题
-第十一章 章节测试
-12.1 音频基础
--12.1 小节习题
-12.2 音频混成器
--12.2 小节习题
-12.3 声音特效
--12.3 小节习题
-第十二章 章节测试