在unity中,3D模型的切换可以使用animator状态机或者代码切换Animator.CrossFade切换函数
使用状态机切换
需要连接各个动画的逻辑关系,并且添加切换参数,设置退出时间,调整切换持续时间等。然后直接使用切换参数SetTrigger等切换。
优点就是直观,方便编辑。缺点就是连线太多,繁琐。
使用API切换
api切换的优点就是不用连线,直接使用代码切换,并且能够实现过渡效果。缺点就是不直观,并且各个动画过渡参数不一样,可能需要配置。
这里有两个API,分别是Animator.CrossFade和Animator.CrossFadeInFixedTime
两个api功能一样,Fixed不同之处在于,其中的参数为固定秒数;CrossFade中的时间,都是基于动画片段的长度归一化设置的。
public void CrossFade(string stateName, float normalizedTransitionDuration, int layer = -1, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f);
stateName:动画名称。切换至目标动画片段
normalizedTransitionDuration:切换持续时间。切换到目标动画,切换过程需要消耗的时间
layer:层。目标动画层
normalizedTimeOffset:时间偏移。切换到目标动画的位置,例如切换到目标状态的0.5(动画50%处)文章来源:https://www.toymoban.com/news/detail-446951.html
normalizedTransitionTime:切换时间。不太清楚这个值具体表示什么,(测试了一下,如果近1,则直接到目标状态,没有过渡。近0,则有过渡,其他切换参数生效。有懂的可以给我说说)文章来源地址https://www.toymoban.com/news/detail-446951.html
到了这里,关于Unity中动画切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!