1、混合树
在游戏中,游戏角色有时候并不精确地处在某一个状态中,如站立与行走之间的过渡。状态转换是从一个状态平滑转换为另一个状态的一个过程。而混合,则可以看作有多个动画同时进行。
要使用混合,参与混合的动作必须有相似性质和时间。混合,可以看做一种特殊的状态。
我们可以在动画控制器窗口界面右键->Create State->From New Blend Tree。来创建一个新的混合树,如下图
刚创建好的混合树是没有内容的,如下:
我们可以双击进入混合树的配置,如下
混合树在4.x版本中有4种类型,分别是1D、2D Simple Directional、2D Freedom Directional、2D Freedom Cartesiam
1D表示由一个参数控制的混合树,2D表示由两个参数控制的混合树。
2、1D混合树
要使用1D混合树,需要将Blend Type选择为1D。
初始的Parameter是空的,我们需要在动画控制器界面添加参数,然后再在Parameter中选择相应的参数。
我们进行一个行走(walk)和跑步(run)这两个动作的混合,假定一个参数speed。小于1之前是行走,大于1是跑步,设置如下。
首先建立一个Float类型参数,并在监视器面板上选择这个参数,如下
在Motion中,我们添加两个动画,并拖动对应的两个动画进来,分别是walk和run。
每个Motion中都有动画片段、阈值和速度这几个参数。
如果勾选上Automate Thresholds(自动阈值),则Motion上的阈值是由系统设置的。
如果我们需要手动阈值,则需要取消勾选Automate Thresholds。
Adjust Time Scale(调整时间比例)可以调整偏度的速度。有均匀速度 (Homogeneous Speed) 和 重设时间比例(Reset Time Scale)两个选项。
当取消勾选Automate Thresholds后,将出来新的选项Compute Thresholds(计算阈值)。
可供选择的数据有速度 (speed)、速率 (velocity) x、速率 (velocity) y 或速率 (velocity) z 以及角速度 (angular speed)(以度或弧度为单位)。如果参数 (parameter) 对应于这些属性之一,则可以使用计算阀值 (Compute Threshold) 下拉菜单计算阈值。
配置好的1个1D混合树如下所示:
类似的,可以给再加上其他动画,通过阈值来控制动画的混合情况。
3、2D混合树
2D混合树有三种不同的类型,它们之间的差异在于计算各个运动影响力的方式。
二维简单方向 (2D Simple Directional)
最适用于运动表示不同方向时,如“向前行走”、“向后行走”、“向左行走”和“向右行走”或是“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”。可以选择包括位置 (0, 0) 处的单个运动,如“空闲”或“笔直瞄准”。在简单方向 (Simple Directional) 类型中,相同方向上不应存在多个运动,如“向前行走”和“向前奔跑”。
二维任意方向 (2D Freeform Directional)
此混合类型也在运动表示不同方向时使用,但是可以在相同方向上具有多个运动,例如“向前行走”和“向前奔跑”。在任意方向 (Freeform Directional) 类型中,运动集应始终包括位置 (0, 0) 处的单个运动,如“空闲”。
二维任意笛卡尔 (2D Freeform Cartesian)
最适用于运动不表示不同方向时。使用任意笛卡尔 (Freeform Cartesian) 时,X 参数和 Y 参数可以表示不同概念,如角速度和线速度。示例包括“向前行走而不转弯”、“向前奔跑而不转弯”、“向前行走并右转”、“向前奔跑并右转”等运动。
一个典型的2D混合树有x和y两个参数。其中,x代表left和right之间的分量。y代表run和back之间的分量。如下图
监视器界面如下
红色点表示两个参数的值,蓝色点表示某个动作的值。红色点越靠近某个蓝色点,说明对应动作的权重越高。
通过设置不同的x和y可以使动作在5个动作之间的某几个动作进行混合,表现出更好的效果。当然,前提是动作能够支持。