Unity-2D 混合
混合節(jié)點__的?Inspector__ 中的第一個選項是?Blend Type。此下拉選單用于選擇不同混合類型之一;這些類型可以根據(jù)一個或兩個參數(shù)進行混合。2D 混合類型根據(jù)兩個參數(shù)來混合子運動。
不同的 2D 混合類型具有適用的不同用途。它們的不同之處在于如何計算對每個運動的影響。
__2D Simple Directional__:最好在運動表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄準(zhǔn)”、“向下瞄準(zhǔn)”、“向左瞄準(zhǔn)”和“向右瞄準(zhǔn)”)時使用。根據(jù)需要可以包括位置 (0, 0) 處的單個運動,例如“空閑”或“瞄準(zhǔn)”。在 Simple Directional 類型中,在同一方向上_不_應(yīng)該有多個運動,例如“向前走”和“向前跑”。
__2D Freeform Directional__:運動表示不同方向時,也使用此混合類型,但是您可以在同一方向上有多個運動,例如“向前走”和“向前跑”。在 Freeform Directional 類型中,運動集應(yīng)始終包括位置 (0, 0) 處的單個運動,例如“空閑”。
__2D Freeform Cartesian__:最好在運動不表示不同方向時使用。憑借 Freeform Cartesian,X 參數(shù)和 Y 參數(shù)可以表示不同概念,例如角速度和線速度。一個示例是諸如“向前走不轉(zhuǎn)彎”、“向前跑不轉(zhuǎn)彎”、“向前走右轉(zhuǎn)”、“向前跑右轉(zhuǎn)”之類的運動。
__Direct__:此類型的混合樹讓用戶直接控制每個節(jié)點的權(quán)重。適用于面部形狀或隨機空閑混合。
設(shè)置混合類型后,首先需要選擇兩個動畫參數(shù)來控制此混合樹。在此示例中,參數(shù)是?velocityX_(掃射)和?velocityZ_(前進速度)。
然后,您可以通過單擊?+ > Add Motion?字段并將動畫剪輯添加到混合樹來添加單個動畫。操作完成后,應(yīng)如下所示:

2D 混合中的位置類似于 1D 混合中的閾值,不同之處是有兩個值而不是一個值,對應(yīng)于兩個參數(shù)。它們沿水平 X 軸的位置對應(yīng)于第一個參數(shù),沿垂直 Y 軸的位置對應(yīng)于第二個參數(shù)。向前走動畫可能的 velocityX 為 0 而 velocityZ 為 1.5,因此應(yīng)將這些值輸入該運動的 Pos X 和 Pos Y 數(shù)字字段中。
2D 混合圖
Inspector 頂部的圖顯示了 2D 混合空間中的子運動的位置。這些運動以藍點顯示。未分配動畫剪輯或混合樹的運動對混合沒有影響,并顯示為灰點。您可以通過單擊圖中的運動點來選擇該運動。選擇運動后,該運動對混合空間中每個點的影響便會可視化為藍色區(qū)域。此區(qū)域位于該運動的位置正下方時最強,此情況下運動具有完全影響,意味著其動畫權(quán)重為 1 而其他動畫的權(quán)重為 0。逐漸遠離該位置后,此運動的影響將減弱,而其他運動的影響將增強。

紅點表示兩個__參數(shù)__的值。如果在?Inspector?底部的?Preview?中按?Play?并在圖中四處拖動紅點,可看到參數(shù)值如何控制不同運動的混合。在圖中,您還可以看到每個運動的影響(表示為圍繞每個運動的圓圈)。您將看到,如果將紅點移動到表示運動的其中一個藍點上,則該運動的圓圈將獲得其最大半徑,而其他所有運動的圓圈將縮小到看不見。在幾個運動之間的位置,附近的多個運動將對混合產(chǎn)生影響。如果選擇其中一個運動以查看該運動的藍色影響區(qū)域,您可以看到在四處移動紅點時,運動的圓形大小與影響區(qū)域在不同位置的強度完全對應(yīng)。
未選擇任何運動時,該圖顯示所有影響區(qū)域的混合,在單個運動主導(dǎo)的位置,顏色會更藍,而在許多運動對混合有影響的位置,藍色會更淡。
位置
您可以通過單擊圖中的對應(yīng)藍點并將其四處拖動來更改運動的位置。此外,還可以通過在 Pos X 和 Pos Y 列的數(shù)字字段中輸入數(shù)字來編輯運動列表中某個運動的位置坐標(biāo)。
Compute Positions?下拉選單將根據(jù)您選擇的數(shù)據(jù)設(shè)置位置(這些數(shù)據(jù)是從動畫剪輯的根運動中獲得的)??晒┻x擇的數(shù)據(jù)是速度 (Speed)、速度 (Velocity) x、y 或 z 以及以角度或弧度表示的角速度 (Angular Speed)。如果您的一個或兩個__參數(shù)__對應(yīng)于其中一個屬性,可以使用 Compute Positions 下拉選單來計算 Pos X 和/或 Pos Y。
屬性:????????????????????????????????????????????????????????????????????????功能:
Velocity XZ?????????根據(jù)運動的 velocity.x 設(shè)置每個運動的 Pos X,根據(jù) velocity.z 設(shè)置 Pos Y。
Speed And Angular Speed????????根據(jù)運動的角速度(弧度/秒)設(shè)置每個運動的 Pos X,根據(jù)速度設(shè)置 Pos Y。
此外,可通過選擇?Compute Position > X Position From?和/或?Compute Position > Y Position From?來一次僅自動計算其中一項而使其他項保持不變,從而進行混合與匹配。
屬性:????????????????????????????????????????????????????????????????????????功能:
Speed????????????????????????????根據(jù)速度(速度的量級)設(shè)置每個運動的 Pos X 或 Pos Y。
Velocity X??????????????????????根據(jù)運動的 velocity.x 設(shè)置每個運動的 Pos X 或 Pos Y。
Velocity Y??????????????????????根據(jù)運動的 velocity.y 設(shè)置每個運動的 Pos X 或 Pos Y。
Velocity Z??????????????????????根據(jù)運動的 velocity.z 設(shè)置每個運動的 Pos X 或 Pos Y。
Angular Speed (Rad)???根據(jù)角速度(弧度/秒)設(shè)置每個運動的 Pos X 或 Pos Y。
Angular Speed (Deg)????根據(jù)角速度(度/秒)設(shè)置每個運動的 Pos X 或 Pos Y。
例如,假設(shè)參數(shù)對應(yīng)于橫向速度和前進速度,并有一段平均速度為 (0, 0, 0) 的空閑動畫、一段速度為 (0, 0, 1.5) 的行走動畫以及兩段速度分別為 (–1.5, 0, 0) 和 (1.5, 0, 0) 的掃射動畫。從下拉選單中選擇?Velocity XZ?選項將根據(jù)這些速度的 X 和 Z 坐標(biāo)來設(shè)置運動的位置。