在蓝图中播放蒙太奇动画,可以使用 PlayAnimMontage 和 PlayMontage,并且PlayMontage可以在,蒙太奇动画播放完的时候执行想要执行的程序

但是在UEC++中,没有PlayMontage(emmmm有可能只是我没找到)

这时候需要实现在播放蒙太奇动画之后需要的程序时间,可以在蒙太奇动画中添加一个通知,通过通知执行需要的程序

譬如利用蒙太奇播放一个攻击动画

1
2
3
4
5
6
7
8
9
10
// 头文件声明变量与攻击函数
// 是否正在攻击
bool IsAttack = false;
UFUNCTION(BlueprintCallable)
void Notify_EndAttack() { IsAttack = false; }
// 需要播放的蒙太奇动画资源
UPROPERTY(EditAnywhere, Category = "Anim")
class UAnimMontage* AttackMontage;
// 攻击
void Attack();

实现攻击函数(记得绑定输入和添加操作映射)

1
2
3
4
5
6
7
void APCharacter::Attack()
{
if (!IsAttack) {
IsAttack = true;
PlayAnimMontage(AttackMontage, 1.f);
}
}

这时候使用攻击函数播放攻击动画,只能播放一次,当播放完之后就无法再播放第二次,而如果在Attack() 中 PlayAnimMontage(AttackMontage, 1.f) 下添加IsAttack = false; 就会立即重置,无法达到想要的效果,而导致攻击鬼畜

再去角色类中添加一个函数,用于实现结束攻击需要执行的功能

1
2
UFUNCTION(BlueprintCallable)
void Notify_EndAttack() { IsAttack = false; }

然后在动画蓝图中执行添加的通知

现在去执行就可以!