unity普通操作:animator播放,暂停,判断播放完成【(增加1个判断如果这个是动画融合的情况)】

78 篇文章 1 订阅
22 篇文章 1 订阅

1.播放,暂停

anim.CrossFade("s2", 0);

anim.speed=0;//暂停

anim.speed=1;//播放

判断播放完成(Update方式)

void Update(){

AnimatorStateInfo stateinfo2 = anim.GetCurrentAnimatorStateInfo(0);

//判断名字 这里 也是预判有动画融合的情况,如果没有动画融合 可以去掉名字判断 增加效率
if (stateinfo2.IsName("s2") && stateinfo2.normalizedTime >= 1.0f)
  {
         //播放完成的代码。       
  }

}

判断播放完成 (协程方式)

//playAnimationName 将要播放动画的名字    animationTime 播放到某一时刻(0 - 1播放完)   action回掉//enemyAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime 当返回的值大于1的时候该动画已经播放完毕
public IEnumerator PlayAnimation(string playAnimationName, float animationTime, System.Action action)
{
    //设置要播放的动画名称
    SetPlayAnimation(playAnimationName, true);
    
    //(增加1个判断如果这个是动画融合的情况!)为什么我会先判断animator是否进入我们想要播放的动画  比如我们想播放attack这个动画  但是当它在    idle转向attack的时候 animator会有一个动画融合
    //当开始播放attack动画的时候他不会立即进入而是回在idle -> attack的过程中 而返回的名字仍然是idle  所以要判断是否进入attack动画
    while (!enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName(playAnimationName))
    {
        yield return null;
    }
    while (enemyAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime < animationTime)
    {
        yield return null;
    }
    //Debug.Log("播放完毕");
    SetPlayAnimation(playAnimationName, false);
    action?.Invoke();
}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AD_喵了个咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值