Unity中动画切换

在unity中,3D模型的切换可以使用animator状态机或者代码切换Animator.CrossFade切换函数

使用状态机切换

需要连接各个动画的逻辑关系,并且添加切换参数,设置退出时间,调整切换持续时间等。然后直接使用切换参数SetTrigger等切换。

优点就是直观,方便编辑。缺点就是连线太多,繁琐。

使用API切换

api切换的优点就是不用连线,直接使用代码切换,并且能够实现过渡效果。缺点就是不直观,并且各个动画过渡参数不一样,可能需要配置。

这里有两个API,分别是Animator.CrossFadeAnimator.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%处)

normalizedTransitionTime:切换时间。不太清楚这个值具体表示什么,(测试了一下,如果近1,则直接到目标状态,没有过渡。近0,则有过渡,其他切换参数生效。有懂的可以给我说说)

猜你喜欢

转载自blog.csdn.net/Ling_SevoL_Y/article/details/129267744