【程序猿】虚幻引擎4:在C++中处理动画

您所在的位置:网站首页 程序猿动漫 【程序猿】虚幻引擎4:在C++中处理动画

【程序猿】虚幻引擎4:在C++中处理动画

2024-07-12 17:54| 来源: 网络整理| 查看: 265

加入该类后,在其头文件中写入以下性质和函数:

添加完成后,切换到源文件然后添加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