unity动画倒播与动态设置循环

动画倒播

之前都是使用混合动画的方法实现无缝衔接倒播的动作,这次的动画混合因为两段动画不一致,丢失了一部分动画.
我哪里敢麻烦美工爸爸重做一个,另一方面觉得只要把动画倒播就能轻松搞定这个问题,然后我就踩了下坑.

大部分的方法都是使用旧动画系统,年代久远已经失效了,官方api里也没翻到有用的信息,百度了很多都不是想要的结果.只有一个方法离想要的效果还差一点点.
定义一个speed变量
在这里插入图片描述
注意multiplier上面的speed是默认的速度,
而我们定义的speed参数控制的是倍数,最终的速度=我们定义的speed参数*multiplier上面那个原本的speed
结果为正数就是正向播放,负数是反向播放.
在这里插入图片描述
使用这个方法之后,你就会遇到和我一样的bug,播放总是有延迟,不是即时触发了动画.
经过我的观察,发现正向播放超过动画总长度之后,隔得时间越久,反向播放延迟的时间越长
给我的感觉就是normalizedTime超过1之后还在不停的增加,倒播也是一样低于0之后还在不停的减小,变成负数.

于是我在改变播放方向前做了点手脚,把normalizedTime修正了一下,果然就没有那个bug了,实现了完美的倒放
(aniUser是个animator类型的引用变量)
在这里插入图片描述
在这里插入图片描述

动态设置循环动画

下一个问题是循环动画,循环动画会有什么问题嘛.我也是这么想的
正常人的思路,一个动画进入时循环播放,离开时停止播放
或者动画不循环,进入时播放动画,离开时反向播放完美衔接

策划的脑回路哪是我能猜测的.我被要求做一个,进入时循环播放,离开时返回默认状态的效果.

拿到这个需求,思路很简单就是想要动态的设置动画循环,结果没有找到对应的api可以在代码中改变动画的loop选项.

于是采用了一个自身跳转自身的动画状态机来实现控制循环
在这里插入图片描述
到这里就完成了么? 并没有
衔接的动画默认会是这个样子
在这里插入图片描述
自身与自身没有完美的循环衔接.
我们需要打开setting,把exit time改成1,transition offset改成0
这样才能循环衔接上
在这里插入图片描述
这两个问题搞定了,下班吃饭去.

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值