Zack.Zhang Game Developer

UE4学习笔记6——动画蒙太奇

2021-10-13
zack.zhang

本笔记的记录了动画蒙太奇的用法。入门示例成品

如果所有动画都按动画状态机的方式来执行,会比较不灵活。那么可以用动画蒙太奇,来指定要播放的动画直接进行播放。

创建蒙太奇

右键创建蒙太奇。这里新建的蒙太奇命名为“AM_Attack”。

UE4-Montage1.png

编辑蒙太奇。

首先打开必须几个窗口,打开窗口菜单,保证“资产详情”、“资产浏览器”、“动画插槽管理”、“蒙太奇片段”已经是打开的状态。

UE4-Montage2.png

编辑插槽

新建插槽(Slot)。这里新建的插槽叫“Attack”。

UE4-Montage3.png

设置插槽。设置为刚才新建的“Attack”。

UE4-Montage4.png

编辑蒙太奇片段

将动画拖入蒙太奇时间轴里,以备编辑。

UE4-Montage5.png

新建片段。在蒙太奇时间轴里点击右键,新建片段,并给片段命名,该命名可以在程序中调用,指定播放哪个片段的动画。这里新建的片段简单命名为“1”。

UE4-Montage6.png

删除默认的片段“Default”。在片段名上点击右键,选择“删除蒙太奇片段”。

UE4-Montage7.png

编辑蒙太奇片段的开始时间。拖动下图中标记的蒙太奇片段开始时间线,标记该片段的开始时间点。

UE4-Montage8.png

蒙太奇片段窗口里,断开片段的链接。点击连接的那个箭头即可弹出如下图所示弹窗。

UE4-Montage9.png

断开后的片段如下图所示,点击“预览”可以看对应的片段的播放情况。

UE4-Montage10.png

编辑通知

动画蒙太奇的通知类似Unity里的动画事件,在对应通知轴里点击右键,添加通知即可。如下图所示,系统默认提供了一些通知,例如“播放音效”、“播放粒子效果”等。这里我们需要在动画结束时候做一些事,那么我们选择“新建通知”。新建的通知,在动画蓝图里可以访问到和通知同名的事件。具体实现内容可以到动画蓝图里实现。

UE4-Montage11.png

这里我们新建的通知名称为“OnAttackAnimEnd”,在动画蓝图中访问该通知/蓝图事件如下图。

UE4-Montage12.png

应用蒙太奇插槽

打开动画蓝图的AnimGraph面板,新建插槽,并将插槽连接到状态机和输出姿势之间。相当于用动画蒙太奇拦截了状态机的输出,将蒙太奇的输出当作姿势的最终输出,来播放动画。默认的是“Default”插槽,可以到“细节”窗口去修改为“Attack”插槽。

UE4-Montage13.png

代码播放片段

角色类里面新增字段,用以保存动画蒙太奇实例的指针。

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Animation")
class UAnimMontage* AnimMontage;

在角色蓝图类里面将刚才创建的动画蒙太奇赋值给上面的指针。

UE4-Montage14.png

播放蒙太奇可以调用如下接口:

// AnimMontage:传入蒙太奇指针。
// InPlayRate:播放速率。
// StartSectionName:蒙太奇片段名称。
float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)

Similar Posts

评论