混合节点__的 Inspector__ 中的第一个选项是 Blend Type。此下拉选单用于选择不同混合类型之一;这些类型可以根据一个或两个参数进行混合。2D 混合类型根据两个参数来混合子运动。
不同的 2D 混合类型具有适用的不同用途。它们的不同之处在于如何计算对每个运动的影响。
__2D Simple Directional__:最好在运动表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”)时使用。根据需要可以包括位置 (0, 0) 处的单个运动,例如“空闲”或“瞄准”。在 Simple Directional 类型中,在同一方向上_不_应该有多个运动,例如“向前走”和“向前跑”。
__2D Freeform Directional__:运动表示不同方向时,也使用此混合类型,但是您可以在同一方向上有多个运动,例如“向前走”和“向前跑”。在 Freeform Directional 类型中,运动集应始终包括位置 (0, 0) 处的单个运动,例如“空闲”。
__2D Freeform Cartesian__:最好在运动不表示不同方向时使用。凭借 Freeform Cartesian,X 参数和 Y 参数可以表示不同概念,例如角速度和线速度。一个示例是诸如“向前走不转弯”、“向前跑不转弯”、“向前走右转”、“向前跑右转”之类的运动。
__Direct__:此类型的混合树让用户直接控制每个节点的权重。适用于面部形状或随机空闲混合。
设置混合类型后,首先需要选择两个动画参数来控制此混合树。在此示例中,参数是 velocityX_(扫射)和 velocityZ_(前进速度)。
然后,您可以通过单击 + > Add Motion 字段并将动画剪辑添加到混合树来添加单个动画。操作完成后,应如下所示:
2D 混合中的位置类似于 1D 混合中的阈值,不同之处是有两个值而不是一个值,对应于两个参数。它们沿水平 X 轴的位置对应于第一个参数,沿垂直 Y 轴的位置对应于第二个参数。向前走动画可能的 velocityX 为 0 而 velocityZ 为 1.5,因此应将这些值输入该运动的 Pos X 和 Pos Y 数字字段中。
Inspector 顶部的图显示了 2D 混合空间中的子运动的位置。这些运动以蓝点显示。未分配动画剪辑或混合树的运动对混合没有影响,并显示为灰点。您可以通过单击图中的运动点来选择该运动。选择运动后,该运动对混合空间中每个点的影响便会可视化为蓝色区域。此区域位于该运动的位置正下方时最强,此情况下运动具有完全影响,意味着其动画权重为 1 而其他动画的权重为 0。逐渐远离该位置后,此运动的影响将减弱,而其他运动的影响将增强。
红点表示两个__参数__的值。如果在 Inspector 底部的 Preview 中按 Play 并在图中四处拖动红点,可看到参数值如何控制不同运动的混合。在图中,您还可以看到每个运动的影响(表示为围绕每个运动的圆圈)。您将看到,如果将红点移动到表示运动的其中一个蓝点上,则该运动的圆圈将获得其最大半径,而其他所有运动的圆圈将缩小到看不见。在几个运动之间的位置,附近的多个运动将对混合产生影响。如果选择其中一个运动以查看该运动的蓝色影响区域,您可以看到在四处移动红点时,运动的圆形大小与影响区域在不同位置的强度完全对应。
未选择任何运动时,该图显示所有影响区域的混合,在单个运动主导的位置,颜色会更蓝,而在许多运动对混合有影响的位置,蓝色会更淡。
您可以通过单击图中的对应蓝点并将其四处拖动来更改运动的位置。此外,还可以通过在 Pos X 和 Pos Y 列的数字字段中输入数字来编辑运动列表中某个运动的位置坐标。
Compute Positions 下拉选单将根据您选择的数据设置位置(这些数据是从动画剪辑的根运动中获得的)。可供选择的数据是速度 (Speed)、速度 (Velocity) x、y 或 z 以及以角度或弧度表示的角速度 (Angular Speed)。如果您的一个或两个__参数__对应于其中一个属性,可以使用 Compute Positions 下拉选单来计算 Pos X 和/或 Pos Y。
属性: | 功能: |
---|---|
Velocity XZ | 根据运动的 velocity.x 设置每个运动的 Pos X,根据 velocity.z 设置 Pos Y。 |
Speed And Angular Speed | 根据运动的角速度(弧度/秒)设置每个运动的 Pos X,根据速度设置 Pos Y。 |
此外,可通过选择 Compute Position > X Position From 和/或 Compute Position > Y Position From 来一次仅自动计算其中一项而使其他项保持不变,从而进行混合与匹配。
属性: | 功能: |
---|---|
Speed | 根据速度(速度的量级)设置每个运动的 Pos X 或 Pos Y。 |
Velocity X | 根据运动的 velocity.x 设置每个运动的 Pos X 或 Pos Y。 |
Velocity Y | 根据运动的 velocity.y 设置每个运动的 Pos X 或 Pos Y。 |
Velocity Z | 根据运动的 velocity.z 设置每个运动的 Pos X 或 Pos Y。 |
Angular Speed (Rad) | 根据角速度(弧度/秒)设置每个运动的 Pos X 或 Pos Y。 |
Angular Speed (Deg) | 根据角速度(度/秒)设置每个运动的 Pos X 或 Pos Y。 |
例如,假设参数对应于横向速度和前进速度,并有一段平均速度为 (0, 0, 0) 的空闲动画、一段速度为 (0, 0, 1.5) 的行走动画以及两段速度分别为 (–1.5, 0, 0) 和 (1.5, 0, 0) 的扫射动画。从下拉选单中选择 Velocity XZ 选项将根据这些速度的 X 和 Z 坐标来设置运动的位置。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.