【程序猿】虚幻引擎4:在C++中处理动画 |
您所在的位置:网站首页 › 程序猿动漫 › 【程序猿】虚幻引擎4:在C++中处理动画 |
加入该类后,在其头文件中写入以下性质和函数: 添加完成后,切换到源文件然后添加UpdateAnimationProperties的实现: 就是这样……这是本教程所需的所有代码。剩余部分将在动画蓝图中处理!编译你的代码并切换到你的编辑器。 第二部分:创建动画蓝图 在你的内容浏览器的空白处点击右键并创建一个动画蓝图: 当你选择了以上选项后,一个菜单会弹出来。你需要为你的动画蓝图选择父类和目标骨骼。在父类选项中输入我们上面创建的C++类。我的类名为MyAnimeInstance,你应该选择你创建的类名。对于目标骨骼,选择第三人称模板项目的骨骼。 将你的动画蓝图命名为你想要的任何名称(我将其命名为Cpp_AnimBP——我们将在后面用到它)。 在创建你的蓝图后,打开它并在其事件图表(Event Graph)中添加一个我们之前创建的Update Animation Properties函数的调用,如下图所示: 然后: 1. 切换到你的动画图表(Anim Graph)中 2. 创建一个新的状态机(State Machine) 3. 将它和最终动画姿势(final animation pose)连接起来(如下图所示) 编译你的蓝图并跳转到你的状态机!由于我们正在重新制作第三人称模板项目动画,我们的状态机将包含与之相同的逻辑。所以我们添加以下状态(它们和模板默认的AnimBP相同): 完成后我们需要加入它们之间过渡的逻辑。 这是从Idle/Run(空闲/奔跑)状态到JumpStart(开始跳跃)状态的过渡规则: 这是从JumpStart状态到JumpLoop(跳跃循环)状态的过渡规则: 我使用的是默认蓝图逻辑中的数值0.1。在真实场景中你可以将其从C++暴露给蓝图,然后根据你的动画需求对其进行调整。 这是从JumpLoop状态到JumpEnd(跳跃结束)状态的过渡规则: 最后一个过渡规则是从JumpEnd到Idle/Run: 我再次使用了默认动画蓝图中的数值0.1。在实际场景中你也许需要做些调整。 既然具备了所有的过渡规则,我们需要进入每个状态相应的动画。 在Idle/Run状态中我们使用一个混合空间,并使用C++文件中的MovementSpeed性质(我使用的混合空间是第三人称模板项目中的): 在JumpStart中只需播放Jump_Start动画序列,如下图所示(确保要取消勾选设置面板中的循环动画(Loop animation)选项): 在JumpLoop状态中只需播放Jump_Loop动画序列: 在JumpEnd状态中播放Jump_End动画序列: 保存并编译你的动画蓝图。 打开你的角色蓝图然后在动画分类中的动画蓝图生成的类(Anim Blueprint Generated Class)中选择我们之前创建的动画蓝图,如下图所示: 保存并编译你的角色蓝图。当按下播放按钮试玩几下后你会注意到动画的播放是正确的,但是它们之间的过渡有些”愣”。这时我们需要用到本文的第三部分了! 第三部分:完成平滑的动画过渡 为了使动画平滑过渡,我们需要调整每个过渡的数值。 · 选择从Idle/Run到JumpStart的过渡规则,然后使用下图中的数值: · 选择从JumpStart到JumpLoop的过渡规则,然后使用下图中的数值: · 选择从JumpLoop到JumpEnd的过渡规则,然后使用下图中的数值: · 选择从JumpEnd到Idle/Run的过渡规则,然后使用下图中的数值: 保存并编译你的蓝图。现在你的动画和第三人称模板中的动画一样了,你应该知道如何使用C++处理动画了! PS:假如你想要使用C++处理动画蒙太奇,在AnimInstance的C++类中你可以调用类似Montage_Play/Montage_IsPlaying/Montage_Stop等函数并为其提供一个UAnimMontage* 类型参数。 点击一下 立即阅读近期热文 …… 添加小编微信,发送“程序”,可享双重福利 1.加入GAD程序猿交流基地 获取行业干货资讯 观看大牛分享直播 2.直接领取60G独家程序资料库 内含 腾讯内部分享、文章教程、视频教程等 全套资料 ↓长按添加小编GAD-沫沫↓返回搜狐,查看更多 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |