在 Unity 2022.3 中具有多个角色的复杂设置中重用动画、装备和控制器的最佳方式是什么?
我有一个有点复杂的场景:
一个角色有 20 个皮肤,虽然皮肤共享很多动画和绑定结构基础知识,但它们之间存在差异:
1.1。某些(并非全部)皮肤具有
Walk
循环剪辑,其具有相同的名称并具有相同的用途,但具有不同的步态。
1.2。有些皮肤有尾巴、翅膀等附属物,这反映在它们的索具结构中。
1.3。有些皮肤有额外的动作/剪辑,例如
Fly
或 Dive
。
这个角色是非人形的:它实际上是两个角色,一个骑着另一个。 我注意到,由于不坚持人形机器人,某些功能似乎在 Mechanim 上不可用。然而,将装备分成两个人形机器人对于动画制作来说根本不切实际。
每个皮肤当前都与模型/装备/动画一起从 Blender 导出到 FBX。
在 Unity 中,皮肤将在装备结构中插入约束/行为,例如使角色看向方向或按程序设置尾巴动画。
我创建了一个带有状态机的控制器,该状态机具有混合状态,因此角色将根据其速度闲置/行走/跑步/冲刺(不同的剪辑),我想保留它。
现在在继续之前我面临着一些难以回答的问题:
a) 如何在多个动画变体之间重用动画控制器?我可以为控制器制作类似“预制变体”的东西吗?
b)是否可以重用动画控制器,或者我必须为每个角色设置整个状态机?
c) 如何以我的方式在所有 20 个皮肤上设置约束和行为以保持良好的维护?
如果我理解正确的话,
AnimatorOverride
可以为你解决问题。
https://docs.unity3d.com/Manual/AnimatorOverrideController.html
唯一的限制是,您必须为每个覆盖设置所有状态,以确保其正常工作(例如,代替独特的“挥手”或“热身”,它可以是单一状态“CustomIdle”,每次覆盖都会引用不同的动画)。
我们曾经共享过这样一个大约一百个字符的控制器,并且这个解决方案已经证明自己是一个很好的解决方案。只有一个基本控制器,具有
attack1
、attack2
、attack_special
、walk
、run
、idle
、death
等状态)以及每个模型的覆盖。对于类似(即兼容)的模型,一些动画可以毫无问题地重复使用。至少我记得是这样。
因此,基本动画器有点复杂,但所有更改都会自动与所有覆盖共享。我们的艺术团队能够在没有任何代码的情况下创建新的覆盖,因为对他们来说,这只是一个要求:“要完成此角色设置,请确保设置所有所需的动画。”