unity animator 可以同时播放几个动作吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity animator 可以同时播放几个动作吗相关的知识,希望对你有一定的参考价值。

参考技术A 之前的代码也繁琐了。animation本来就可以通过transform.animation 来访问。如果是在脚本代码中,可以直接用animation来访问animation组件。 默认的基础类都是这个特性,比如rigidbody、renderer等等这些一样,你既可以通过rigidbody.transform来访问其transform,也可以通过transform.rigidbody来访问rigidbody,前提是确实该组件,否则为null。 现在的版本animation 一样可以使用,比较重大的改变是不再具备通过动画编辑窗口来添加材质方面的动画,比如color 方面的动画,无法直接给material的相关参数添加关键帧建立动画曲线。 你只能通过给一个脚本的变量添加动画曲线,然后再在脚本中通过代码去关联该变量和color,间接做材质color动画 :var a:float; //在动画编辑器中添加曲线改变alpha值 function Update() renderer.material.color.a = a; unity4.x版本保留了animation作为旧版本的动画组件,同时加入了Animator,也就是mecanim动画系统,这个系统是专门设计来应付生物属性的角色动画的,有更紧密、更复杂的混合系统,其编辑模式跟animation 截然不同!你需要通过animator动画状态可视化编辑器来搭建动画层级和状态图,再通过animator来播放预定义的状态,从而达到动画播放效果。也就是说,动画不再基于clip剪辑,而是state状态。你可以去查看animator的官方脚本参考,你就知道他是怎么用的了。其实也差不多,原理不同,不能再用animation["clip name"] 来简单粗暴的操作clip的参数了,现在改变播放速度、时间轴等操作你都必须通过animator来调整相应state的播放属性,而不是像旧版直接去改变clip的参数。基本的播放也是用Play()、Stop()等,参数不同, 而且你要play的动画状态必须预先在编辑面板正确设置好! 如果你想继续使用旧版的animation做为导入动画剪辑,那你应该在导入的动画模型选项中选择使用旧版legacy animation,具体怎么写的记不得了,应该可以找到的。

如何在不重复Unity动画的情况下通过Animator提高动画播放速度

【中文标题】如何在不重复Unity动画的情况下通过Animator提高动画播放速度【英文标题】:How to increase animation play speed through Animator without repeating the animation in Unity 【发布时间】:2022-01-23 18:36:18 【问题描述】:

首先,我尝试每 10 秒启动一次动画。所以我将过渡持续时间设置为 10 秒,并且它起作用了。动画在 10 秒内只运行了一次。

而且动画播放太慢像慢动作一样,所以我尝试通过动画控制器将速度提高三倍。 之后我的动画速度加快了,但也开始重复 3 次而不是 1 次

那么如何在不重复动画的情况下提高速度呢?

详情:

红圈是我想在10秒内运行并提高速度的动画:

trap_idle0trap_idle1 转换:

trap_idle1 设置:

trap_idle1trap_idle0 的转换:

【问题讨论】:

【参考方案1】:

您的问题是您尝试每 10 秒播放一次动画。您应该考虑通过脚本来执行此操作,而不是使用您尝试实现的怪异动画转换循环,因为这样您将无法通过。

尝试使用 WaitForSeconds(10) 的协程或使用 nextPlayTime = Time.time + 10 的时间计算?

希望有所帮助

【讨论】:

好吧,看来我没有别的选择了

以上是关于unity animator 可以同时播放几个动作吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重复Unity动画的情况下通过Animator提高动画播放速度

unity-动画状态机Animator

Unity3D - 动作动画忽略timeScale

Unity—ParticleSystem(粒子系统)与Animator(动画状态机)批量管理器

unity3d播放器和animation不一致

unity animator 怎么判断动画正在播放