虚幻5---第12部分---蒙太奇

动画蒙太奇(Animation Montages)

------创建用于攻击的动画蒙太奇

重点:

  1. 了解蒙太奇的概念和用途。增加攻击的动作映射。

增加一些动画

  1. 把动画重新定位到echo。
  2. 新建动画蒙太奇。
  3. 熟悉蒙太奇动画编辑页面的操作。
  4. 使用默认插槽
  5. 蓝图模拟实现

通过 C++ 播放蒙太奇(Playing Montages from C++)

------从 C++ 调用蒙太奇播放

重点和流程:

  1. 删掉蓝图节点。
  2. 建立一个回调函数,绑定到攻击动作映射。
  3. 添加蒙太奇变量。
  4. 在攻击函数里播放一个蒙太奇。

出现的问题:

  1. 头文件拼写错误以及函数的参数类型错误,例如图里漏了地址符。有时候编译没有报错,而且会导致无法打开项目。出现错误信息。

错误信息:

这种错误信息记得多去检查vs上的代码。

  1. C++代码里的名字不要随便空格,否则可能导致代码无法识别到正确的动作。

攻击状态(Attacking State)

------处理角色的攻击状态逻辑

重点与流程:

  1. 优化一下跑步动画。

这里编辑重定向姿势

  1. 简要说一下动画的流程:

    下载动画-放到对应文件夹-导入虚幻5文件夹记得选好骨骼-对齐骨骼-进入动画蓝图拖出动画-连接。

  2. 解决连续攻击动画被打断的问题。学会重构代码方便管理。

  3. 多加一下枚举来定义战斗的状态。

重置动作状态(Resetting the Action State)

------使用动画通知重置动作状态

重点和流程

  1. 现在动画不可打断,不过只能攻击一次,现在要解决这个问题。想办法在攻击动画结束时,把动作状态重置为未占用。
  2. 一种方法叫:动画通知。
  1. 方法二:用C++来处理这些事情。

具体流程:

  1. 创建一个蓝图可调用函数,在攻击结束通知时调用它。
  2. 在蓝图里使用你的对象连接你写的函数
  1. 方法3:在方法二的基础上,右键你的对象蓝图变量,转化为验证获取。

  2. 解决非武器状态下依旧进行武器动画:给攻击函数加个状态判断就行了。或者写一个bool函数来判断状态。

注意:

  1. 这部分每一部分写完代码后多多关闭编辑器在代码文件来重启项目。蓝图部分有了新的修改也要这么做稳妥点。

物品状态(Item State)

------为物品状态创建枚举

重点与流程:

使物品自然状态漂浮,但是在人物手中不漂浮。
  1. 定义一个用来表示物品状态的枚举。创建一个类变量并初始化状态。
  2. 在C++的物品tick函数里面写出漂浮的判断和对应函数逻辑。
攻击在进行时移动,看起来像脚滑。我修改一下,让攻击时不可操控移动。
  1. 在移动函数里面设置一下攻击状态判定就好了,不符合就退出函数。
示例图:


声音通知与元声音(Sound Notifies and Meta Sounds)

------为动画添加音效

重点和流程:

给项目添加声音
  1. 下载声音,导入声音。(也可以在其它项目导入更好的声音)
在挥剑的时候播放声音
  1. 方法一:在动画编辑器里面添加播放声音的通知,选择声音类型。

    同样的,也可以给蒙太奇加通知。(这个方法先要调节声音得去声音资产里面调,这样不好)

  2. 方法二:建立声音线索。然后在动画里面声音通知那里使用声音线索。

虚幻5专门的声音设置方法。(元音效)
  1. 创建一个MetaSound。就先启用MetaSounds插件。
  2. 在MetaSound蓝图编辑器里面,为要播放的Wave资产添加输入。
  3. 连接MetaSound蓝图。
  4. 在蒙太奇动画里面进行设置。比如添加随机音高或者随机的音量。
改良。
  1. 新建MetaSound源。在它的蓝图里面选择资产类型后创建数组。加入多个声音。
  2. 随机播放里面的一种。
示例图:

脚步声元声音(Meta Sounds for Footsteps)

------为跑步动画添加音效

重点与流程:

用远古山谷里面的各种脚步音效制作一个Meta Sounds.
  1. 新建一个MetaSounds,重命名,双击进入。
  2. 设置好输入变量,导入资产。ps:可以直接选中多个资产拖入,记得选择数组。
  3. 进入指定的动画,添加声音通知。
给袋子的音效制作一个MetaSounds

步骤同上。同时也可以直接其它事物的音效。

在原有的动画资产上修改声音
  1. 点击它的声音通知,把元声音拖到它的声音资产那里。
添加脚步走动时的灰尘(Niagara)
  1. 回到我们的指定动画。建立或者重命名新的轨道。
  2. 右键添加Niagara粒子效果的通知。(别错选成粒子效果)
  3. 设置这个通知的插槽命名
设置跳跃和落地的音效。
  1. 操作流程同脚步音效。
  2. 忘了动画位置的查找方法。找到我们的着地动画,替换成自己的音效。
示例图:

修正脚部定位(Fixing Foot Placement)

------设置初始 IK 骨骼位置

重点与流程:

Echo拿武器站立时的腿看起来太靠近了,修复一下
  1. 这跟我们的control rig有关。进入我们的脚步ik蓝图。
  2. 在预览场景选项里面选择我们对应的动画种类。断开总线,检查脚的ik骨骼位置。
  3. 得到对应的解决方法。
    ps:再修复一下我们的脚步追踪,使腿遇到高的障碍物不会抬太高。
示例图:

收剑动作(Putting the Sword Away)

------装备与卸除武器动画

重点与流程:

让Echo可以把剑放到背上以及拔出剑。
  1. 在mixamo中下载新的动画装备武器与拔出武器动画。选择骨骼,导入项目。
  2. 打开IK重定位器,在里面播放动画看看效果。
  3. 把IK重定向里面的动画导入到选定的动画文件夹,双击看看效果。
  4. 为装备和卸装创建一个蒙太奇。在蒙太奇里设置好(默认片段等等)
然后在C++里编辑该动画逻辑
  1. 创建变量EquipMontage。
  2. 在原本的动画逻辑加上一些逻辑,判定动画的触发条件。
  3. 创建一个bool函数来检查条件。
  4. 为装备武器和卸下装备各自创建一个播放蒙太奇的函数。
示例图:


播放装备与卸除武器蒙太奇(Playing Arm and Disarm Montages)

------通过代码播放蒙太奇

重点与流程

在测试之前,在BP_SlashCharacter里,把装备蒙太奇设置成一个蒙太奇。
  1. 在角色蓝图里面,蒙太奇部分,设置Equip Montage。
  2. 把之前的重叠物品OverlappingItem置空,否则装备的动画失效。
示例图:

将剑挂载到背部(Attaching the Sword to the Back)

------为骨骼添加套接点(Socket)

重点与流程:

把剑挂到背上
  1. 在Echo的骨骼上背部添加一个插槽。打开骨骼网络体编辑器。
  2. 选择指定背部骨骼,右键添加插槽。
  3. 右键插槽,添加预览资产,调节位置。然后,选择预览动画,看看位置调整。
怎么装上那把武器
  1. 先处理取消装备,在对应的蒙太奇编辑器里面,添加通知。
  2. 在蓝图添加解除武装的通知。可以快速重构一下项目对应的物品吸附部分代码。
  3. 创建一个函数,将武器附着到脊椎上,不确定FName名字可以回到骨骼编辑器对照。
  4. 在蓝图添加你写的函数,进行连接。
  5. 播放看看。效果不对可以去骨骼网络编辑器调整。
  6. 做装备部分。流程就是1~5.
装备过程的动画,移动时出现滑行问题解决。
  1. 增加一些枚举变量(设置我们状态)。
  2. 在函数里面写状态的变换。
  3. 设置动画结束时的通知,这样在C++里可以根据这个切换状态。
  4. 写结束动画的函数。
示例图

装备与卸除武器音效(Equip and Unequip Sounds)

------在装备与卸除武器时播放音效

重点与流程

收武器拿武器的动作添加音效
  1. 进入装备蒙太奇。添加新轨道添加新音效通知。设置对应动作的音效
  2. 拿到并使用一些剑的声音。导入。建立对应的metasounds。按照以往那样设置
  3. 回到C++函数。现在这个E键的函数有点大了,未来需要重构一下。在武器的文件设置从地上捡起剑的声音播放的逻辑。
  4. 回到武器的蓝图,设置我们的音效。
解决一些问题
  1. 武器在挥动时按e会出现音效。原因:重叠物品的判定在靠近剑时判定为重叠,在拿到物品后为无,可是挥剑时又变成了重叠。所以应该时攻击时发生了胶囊体重叠事件。解决办法:在C++设置我们的物品碰撞为无。
示例图

编辑动画(Editing Animations)

------在虚幻编辑器中编辑动画

重点与流程:

在360旋转动画里出现问题,我携带的瓶子在动画里出现了翻转。
  1. 进入动画的c++,专门测试这个动画。
  2. 在编辑器按下~,输入show collision,观察碰撞。
  3. 按下~键,输入Slomo启用慢动作。Slomo 0.1为0.1倍速。
  4. 发现时手臂撞到了它。进入指定动画编辑器,在问题出现的时间前面设置一个关键帧。
  5. 创建一个没有关键帧的动画。

挑战12:

  1. 找一些攻击动画,导入项目,让游戏更有趣。
  2. 复制你的一次攻击动画,在动画里面添加关键帧,调整姿势来制作一个低攻击,将这些关键帧生成一个新动画。
相关推荐
小旭95272 小时前
Java 反射详解
java·开发语言·jvm·面试·intellij-idea
雨季6662 小时前
Flutter 三端应用实战:OpenHarmony “极简文本行数统计器”
开发语言·前端·flutter·ui·交互
m0_748233172 小时前
PHP版本演进:从7.x到8.x全解析
java·开发语言·php
雨季6662 小时前
Flutter 三端应用实战:OpenHarmony 简易“动态字体大小调节器”交互模式深度解析
开发语言·flutter·ui·交互·dart
zhengfei6112 小时前
精选的优秀法证分析工具和资源列表
开发语言·php
当战神遇到编程2 小时前
图书管理系统
java·开发语言·单例模式
u0109272713 小时前
实时数据流处理
开发语言·c++·算法
PacosonSWJTU3 小时前
mac-python解释器理解与python安装
开发语言·python
Trouvaille ~3 小时前
【Linux】线程同步与互斥(一):线程互斥原理与mutex详解
linux·运维·服务器·c++·算法·线程·互斥锁