Unity 动画系统采用状态机将每一个動画视为一个状态,根据用户的输入来改变状态机中的条件利用该特定的条件来控制状态的切换,从而实现动画的改变下面将从四个步骤来展示动画系统的使用方法。
- 设置动画状态间的过渡及过渡参数注意取消勾选Has Exit Time。默认情况下动画间的过渡是勾选Has Exit Time的表示一个动画播放结束完自动播放过渡后的动画。由于我们设置了过渡参数当条件符合过渡时,才实现一个动画到另一个动画的过渡因此这里不需偠勾选Has Exit Time。
- 用代码控制动画状态间的过渡
在这个阶段中,我们实现向不同方向跑的动画包括向左、右转弯跑和向前跑。
- 设置动画状态、動画过渡及过渡参数
这种方法可以实现按住不同的键,角色向不同的方向跑动但是在跑动过程中会发现一个问题,不同方向跑动切换過程中角色会经历一个站直的过程这使得动画看起来不连贯。
为什么动画会不连贯呢因为向左跑、向前跑和向右跑之间没有直接的过渡动作,他们都需要通过Idle这个状态作为中转导致角色必须经过站直,然后才能实现不同方向的跑动为了解决这个问题,需要在不同方姠奔跑的动画状态中加入直接过渡
Any State表示任何状态,表示动画系统中当前层中的任何一个状态可以用它来完成不同方向奔跑动画切换的連贯性。
- 设置动画状态、过渡及过渡参数
- 编写代码,这里由于过渡参数没有改变代码不需要调整。
这里仍然会发现有一些问题角色跑动的时候会卡顿卡顿的,这个需要调节动画过渡中的混合时间比例本篇文章不做阐述。
这个部分用Blend Tree来实现角色向不同方向跑动的动画
- 用鼠标调节Animator窗口中Blend的值,可以在Inspector面板的预览窗口中看到角色动画的改变