unity动画倒播与动态设置循环
动画倒播
之前都是使⽤混合动画的⽅法实现⽆缝衔接倒播的动作,这次的动画混合因为两段动画不⼀致,丢失了⼀部分动画.
我哪⾥敢⿇烦美⼯爸爸重做⼀个,另⼀⽅⾯觉得只要把动画倒播就能轻松搞定这个问题,然后我就踩了下坑.
⼤部分的⽅法都是使⽤旧动画系统,年代久远已经失效了,官⽅api⾥也没翻到有⽤的信息,百度了很多都不是想要的结果.只有⼀个⽅法离想要的效果还差⼀点点.
定义⼀个speed变量
注意multiplier上⾯的speed是默认的速度,
⽽我们定义的speed参数控制的是倍数,最终的速度=我们定义的speed参数*multiplier上⾯那个原本的speed
结果为正数就是正向播放,负数是反向播放.
使⽤这个⽅法之后,你就会遇到和我⼀样的bug,播放总是有延迟,不是即时触发了动画.
经过我的观察,发现正向播放超过动画总长度之后,隔得时间越久,反向播放延迟的时间越长
给我的感觉就是normalizedTime超过1之后还在不停的增加,倒播也是⼀样低于0之后还在不停的减⼩,变成负数.
于是我在改变播放⽅向前做了点⼿脚,把normalizedTime修正了⼀下,果然就没有那个bug了,实现了完美的倒放(aniUser是个animator类型的引⽤变量)
动态设置循环动画
下⼀个问题是循环动画,循环动画会有什么问题嘛.我也是这么想的
正常⼈的思路,⼀个动画进⼊时循环播放,离开时停⽌播放
或者动画不循环,进⼊时播放动画,离开时反向播放完美衔接
策划的脑回路哪是我能猜测的.我被要求做⼀个,进⼊时循环播放,离开时返回默认状态的效果.
拿到这个需求,思路很简单就是想要动态的设置动画循环,结果没有到对应的api可以在代码中改变
动画的loop选项.
于是采⽤了⼀个⾃⾝跳转⾃⾝的动画状态机来实现控制循环
到这⾥就完成了么? 并没有
衔接的动画默认会是这个样⼦
⾃⾝与⾃⾝没有完美的循环衔接.
unity3d animation我们需要打开setting,把exit time改成1,transition offset改成0这样才能循环衔接上
这两个问题搞定了,下班吃饭去.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论