使用动画
Unity有两个动画系统,均由Atavism支持。也就是说,Unity创建的新动画系统提供了更好的支持,并且更容易与Atavism一起使用。注意:目前,默认的演示角色仍然使用传统动画系统,UMA演示使用新的动画系统。默认演示将在不久的将来某个时候更新以使用新系统。
无论使用何种动画系统,播放器/怪物(此处仅称为小怪)动画都由MobController脚本控制,该脚本应位于每个角色和mob预制件上。
动画类别
动画分为两类,一般和覆盖。一般动画是循环动画,例如由怪物状态决定的空闲,步行或跑步。覆盖动画是一次性动画,例如波浪或剑摆动,可以覆盖一般动画。
如何管理一般动画
只要没有激活覆盖动画,就会播放常规动画。怪物控制器读取怪物的运动状态(跑步,游泳或飞行),怪物的当前运动或速度以及其他一些状态(死亡还是活着?在战斗中?)来确定应该播放什么动画。
如何管理覆盖动画
调用PlayAnimation()函数时设置覆盖动画,同时使用动画名称和长度来播放指定的动画。然后,Mob Controller将播放该动画,直到时间到期或设置了新的覆盖动画。
使用Unity Animator
Unity Animator有一个状态/转换系统,可以根据各种属性确定应该播放哪个动画。建议您花一些时间熟悉系统,方法是阅读:https://docs.unity3d.com/Documentation/Manual/Animator.html。注意:预制件需要Animator组件才能使用新的Animator系统。
随Atavism提供的Mob控制器为Animator设置参数(参见上面的部分,了解如何制作动画),然后Animator确定要播放的动画。结果是您的大多数动画设置都将使用Animator工具,您不需要对Mob Controller进行许多(或任何)更改。随演示提供的Animator设置已准备好与一般动画一起使用,但需要您处理覆盖动画,因为这些动画将特定于您的游戏。
它是如何工作的,你在mob控制器的PlayAnimation()函数中设置的动画名称是将在Animator工具中设置的参数的名称。因此,如果您告诉mob控制器播放“Bow”,您需要在Animator工具中设置一个“Bow”参数,MobController将设置为true,然后在经过时间长度时设置为false。 Point动画的示例步骤:
- 您在Animator工具中创建一个名为Point的Bool参数。
- 您在Animator工具中创建一个新状态,将其命名为Point并将Motion设置为某个动画(理想情况下是一个指向…的动画)
- 您可以创建从空闲状态到新点状态的新转换,条件为Point为True,然后在Point为false时转换回。 在你的一个脚本中,
- 你可以调用PlayAnimation(“Point”,2);
现在运行该脚本时,Animator工具上的“Point”属性将设置为true,然后在2秒后返回false。这将导致Animator将状态从Idle更改为Point,从而播放Point动画,然后在2秒时间内返回到Idle状态。
使用Legacy Unity动画系统
Legacy Unity Animation系统受到更多限制,因为它需要将每个动画拖入MobController。这意味着如果你想要更多的默认动画选项,你需要编辑MobController中的代码来处理它,这可能有点棘手。默认情况下,传统动画系统处理空闲,步行,跑步,跳跃,战斗空闲,非武装攻击和死亡。您可以通过将动画对象拖动到mob预制件上的mob控制器组件上的动画插槽中来完成这些工作。
注意:mob预制件需要其上的Animation组件才能使用旧版动画系统。