一个3d模型有两个动画状态,Idle(待机),Move(移动)
如果连续通过crossFade播放这两个动画,模型会发生不断地重复闪现错乱。
例如
animation.crossFade(“Idle”);
animation.crossFade(“Move”);
这时会发生动画闪现错乱的效果。
如果这样运行就没问题
animation.crossFade(“Idle”);
this.scheduleOnce(()=>{
animation.crossFade("Move");
},0.3);
//因为crossFade 默认的动画过渡时间是0.3秒,所以延迟0.3秒后再过渡另一个动画就没问题
或者
animation.crossFade(“Idle”,0);
animation.crossFade(“Move”,0);
//把动画的过渡时间设置为0,连续执行多个动画切换也没事。
或者
animation.play(“Idle”);
animation.play(“Move”);
//直接用play播放也没事,效果和crossFade(“动画”,0)一样。
总结出原因就是,一个动画在crossFade时,如果过渡时间(默认0.3秒)还没过完就crossFade另一个动画,必定会发生动画错乱。
