多个动画事件触发
最近在添加人物脚步声效,所以打算使用unity的动画事件来制作,但走路动画是用的2d的混合树,就导致了当动画进行混合播放的时候,动画事件也会一起触发
解决方法
在unity社区进行搜索后发现了这篇2015年的帖子,在unity官方技术人员的评论下找到了答案:
具体做法是通过返回动画事件(AnimationEvent),来获取当前动画事件的权重,然后通过判断权重来限制方法
代码如下:
void Event(AnimationEvent animationEvent)
{
if(animationEvent.animatorClipInfo.weight > 0.5f)
//权重不一定是0.5,看需要去修改
//这里写处理的事件
}
因为动画事件只能返回一个参数,使用了返回AnimationEvent参后就不能再返回其他参了,所以想要传多参的话可以:文章来源:https://www.toymoban.com/news/detail-519670.html
void Event(AnimationEvent animationEvent)
{
//传多参
string test_string = animationEvent.stringParameter;
int test_int = animationEvent.intParameter;
float test_float = animationEvent.floatParameter;
object test_object = animationEvent.objectReferenceParameter;
}
补充
还是上面那个帖子里面,22年有个老哥说自己明明在播放这个动画,但该动画的权重总是不能达到自己设置的权重,他给出的解决方法就是在设置参数时尽可能四舍五入(Mathf.Round)到最近的整数。如果有需要可以去参考一下
文章来源地址https://www.toymoban.com/news/detail-519670.html
到了这里,关于Unity Blend Tree(动画混合树)与AnimationEvent(动画事件)一起使用所带来的多个动画事件触发的问题及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!