在我们的游戏中,我们使用了Mecanim动画中的Generic动画类型,几乎所有的动画切换和融合,我们都直接交给Animator自行处理了。省事倒是省事了,随之也带来了一些不可预知(其实是自己能力不足好吧)的问题。
今天我要分享的是一个这样的问题,例如主角正在进行A动作,此时受到攻击通过Trigger设置,切换到B动作,主角的AnimatorController中并没有直接从A动作过渡到B动作的Transition,A动作和B动作都是可以从AnyState直接切换的,也就意味着AnimatorController会自动根据当前动画的状态从当前播放的动画过渡到目标动画中去。
在A动作还没有播放完的情况下,我们通过设置Trigger的方式将A动作切换到B动作,而A动作上又绑有一些AnimationEvent,这些AnimationEvent会在动画执行到对应的时间轴的时候触发回调,用图来表达,最好不过了。图一中的这种情况,OnSkillEnd这个AnimationEvent是不会被回调的,而在图二中,OnSkillEnd这个AnimationEvent就会被回调。因为每个从AnyState出发的Transition都是有过渡时间的,如果绑定的AnimationEvent所处的时间轴在动画过渡时间之内,那么就会触发这个Event,否则就不会回调。
博主,请问 这个Write Defaults 项是作什么的?有什么作用??Interrupt Source 是什么意思?有什么作用?我在官网论坛发的帖子,请博主指点 http://forum.china.unity3d.com/thread-7737-1-1.html
你谈到的这个都是Unity 5以后的新特性吧,我倒还没有真正在项目中使用过Unity 5,所以说不上来具体作用是什么,不过从字面意思来理解的话,Interrupt Source的意思应该指的就是我们使用Trigger或者其他条件让动画A切换到动画B的时候,直接终止A动画的播放,直接硬切过去而不做过渡的意思吧。
谢谢您的回复,请问Write Defaults 是作什么的?我试了很久也没有发现它有什么作用?当在一个空状态上开这个时,会出现怪异的情况?
这个还真是不知道呢,因为还没有用过Unity 5做实际的开发。帮不上忙了,很遗憾。
谢谢,我知道会告诉你的,祝你一切顺利
那就太感谢了,一定记得分享哦