播放动画
//播放动画,传入要播放的动画即可
PlayAnimMontage(AttackAnim);
//PlayerCharacter.h
protected:
UPROPERTY(EditAnywhere, Category="Attack")
UAnimMontage* AttackAnim;
然后在角色蓝图中选择对应的攻击动画
设置定时器
我们需要角色攻击时候射出子弹的时间和动画中射出子弹的时间时重合的,我们不希望角色在攻击前摇比如说抬手的时候射出子弹。可以通过动画蓝图事件去解决这一问题,也可以通过定时器去解决。
void APlayerCharacter::PrimaryAttack()
{
//播放动画,传入要播放的动画即可
PlayAnimMontage(AttackAnim);
//第一个参数是一个定时器句柄,如果需要在这个定时器开始之前清除它只需要清楚句柄即可。
//第二个参数是使用这个定时器的类。
//第三个参数为触发的函数。
//第四个参数是定时器的时间,即过了这个时间之后再触发那个函数
GetWorldTimerManager().SetTimer(TimerHandle_PrimaryAttack, this, &APlayerCharacter::PrimaryAttack_TimeElased, 0.17f);
//当角色死亡的时候调用就可以马上停止攻击
//GetWorldTimerManager().ClearTimer(TimerHandle_PrimaryAttack);
}
//PlayerCharacter.h
protected:
FTimerHandle TimerHandle_PrimaryAttack;
//这个函数中就是原本执行攻击生成子弹的函数
void PrimaryAttack_TimeElased();