Unity-使用動畫曲線
屬性列表
在__動畫剪輯__中,任何可動畫屬性都可以具有__動畫曲線__,這意味著動畫剪輯控制著該屬性如何隨時間推移而變化。在 __Animation 視圖__的屬性列表區(qū)域(左側(cè))中,會列出所有當(dāng)前已動畫化的屬性。Animation 視圖處于關(guān)鍵幀清單模式時,每個屬性的動畫值僅顯示為線性軌跡,但在曲線模式中,變化的屬性值會被可視化為圖上的線條。無論使用哪種視圖模式,曲線均存在;不同之處在于,關(guān)鍵幀清單模式只提供僅在關(guān)鍵幀出現(xiàn)時顯示的數(shù)據(jù)的簡化視圖。
在__曲線__模式中,__動畫曲線__具有彩色曲線標(biāo)記,每種顏色代表屬性列表中當(dāng)前所選屬性之一的值。有關(guān)如何將曲線添加到動畫屬性的信息,請參閱有關(guān)使用 Animation 視圖的部分。

了解曲線、關(guān)鍵點(diǎn)和關(guān)鍵幀
動畫曲線__具有多個__關(guān)鍵點(diǎn)__,這些關(guān)鍵點(diǎn)是曲線路徑上的控制點(diǎn)。這些點(diǎn)在__曲線編輯器__中顯示為曲線上的小菱形。如果一個幀在一條或多條曲線中具有__關(guān)鍵點(diǎn)__,則該幀稱為__關(guān)鍵幀。
如果某個屬性在當(dāng)前預(yù)覽的幀中具有__關(guān)鍵點(diǎn)__,則曲線軌跡上將有一個菱形標(biāo)記,并且屬性列表也將在該值旁邊出現(xiàn)一個菱形標(biāo)記。

__曲線編輯器__僅會顯示所選屬性的曲線。如果在屬性列表中選擇多個屬性,則曲線將疊加在一起顯示。
添加和移動關(guān)鍵幀

您可以通過單擊?Keyframe?按鈕在當(dāng)前預(yù)覽的幀中添加__關(guān)鍵幀__。
可通過單擊?Keyframe?按鈕在當(dāng)前預(yù)覽的幀中添加__關(guān)鍵幀。此操作將為所有當(dāng)前選定的曲線添加關(guān)鍵幀。還有一種方法可將關(guān)鍵幀添加到任何給定幀的單條曲線,只需雙擊應(yīng)該添加新__關(guān)鍵幀__的曲線。此外,也可以通過右鍵單擊__關(guān)鍵幀線__并從上下文菜單中選擇?Add Keyframe__ 來添加__關(guān)鍵幀。添加__關(guān)鍵幀__后,可使用鼠標(biāo)將其四處拖動。另外,還可選擇一次拖動多個__關(guān)鍵幀。通過選中__關(guān)鍵幀__并按?Delete?或者通過右鍵單擊關(guān)鍵幀并從上下文菜單中選擇 __Delete Keyframe__,即可刪除關(guān)鍵幀。
支持的可動畫屬性
Animation 視圖__可用于動畫化更多屬性,而不僅限于__游戲?qū)ο骭_的位置、旋轉(zhuǎn)和縮放。您可以動畫化任何__組件__和__材質(zhì)__的屬性,甚至是您自己的腳本組件的公共變量。若要生成具有復(fù)雜視覺效果和行為的動畫,只需為相關(guān)屬性添加__動畫曲線。
動畫系統(tǒng)支持以下類型的屬性:
Float
Color
Vector2
Vector3
Vector4
Quaternion
Boolean
不支持?jǐn)?shù)組,也不支持以上列表以外的結(jié)構(gòu)體和對象。
對于布爾值屬性,值為?0?等于?False__,而其他任何值等于?True__。
以下是 __Animation 視圖__的多種用途的幾個示例:
動畫化__光照__的__顏色__和__強(qiáng)度__,從而使其閃爍、閃光或跳動。
動畫化循環(huán)__音頻源__的__音高_(dá)_和__音量__,從而在將聲音資源的大小保持在最低限度的同時,使吹風(fēng)、運(yùn)行的引擎或流水變得生動。
動畫化__材質(zhì)__的__紋理偏移__,從而模擬移動的皮帶或軌道、流水或特效。
動畫化多個__橢圓粒子發(fā)射器__的__發(fā)射__狀態(tài)和__速度__,從而生成壯觀的煙花或噴泉表演特效。
動畫化您自己的腳本組件的變量,使事物隨著時間推移而有不同行為。
使用__動畫曲線__來控制游戲邏輯時,請注意 Unity 中回放和采樣動畫的方式。
旋轉(zhuǎn)插值類型
旋轉(zhuǎn)在 Unity 內(nèi)部用__四元數(shù)__的形式表示。四元數(shù)包含?.x、.y、.z?和?.w?值。除非對這些值的作用非常熟悉,否則通常不應(yīng)手動修改這些值。一般應(yīng)使用__歐拉角__來操作旋轉(zhuǎn)。歐拉角具有?.x、.y?和?.z?值,表示圍繞這三個相應(yīng)軸進(jìn)行的旋轉(zhuǎn)。
在兩個旋轉(zhuǎn)之間進(jìn)行插值時,可對__四元數(shù)__值或__歐拉角__值執(zhí)行插值。__Animation 視圖__可讓您選擇在動畫化__變換__旋轉(zhuǎn)時使用哪種插值形式。但是,無論使用哪種插值形式,旋轉(zhuǎn)始終以__歐拉角__值形式顯示。

四元數(shù)插值
四元數(shù)插值總是沿兩個旋轉(zhuǎn)之間的最短路徑產(chǎn)生平滑的旋轉(zhuǎn)變化。這樣可避免產(chǎn)生旋轉(zhuǎn)插值瑕疵,例如萬向鎖 (Gimbal Lock)。然而,四元數(shù)插值總是尋找最短路徑,因此不能表示大于 180 度的旋轉(zhuǎn)。(為了理解這一點(diǎn),您可以想象在球體表面上選取兩個點(diǎn),這兩個點(diǎn)之間的最短路徑永遠(yuǎn)不會超過球體周長的一半)。
如果使用四元數(shù)插值并將旋轉(zhuǎn)數(shù)值設(shè)置為相隔 180 度以上,則 Animation 窗口中繪制的曲線仍將顯示超過 180 度的覆蓋范圍,但是對象的實(shí)際旋轉(zhuǎn)將采用最短路徑。

對旋轉(zhuǎn)使用四元數(shù)插值時,更改任意 x、y 或 z 曲線的關(guān)鍵點(diǎn)或切線也可能會更改其他兩條曲線的值,因?yàn)樗腥龡l曲線都是從內(nèi)部四元數(shù)表示中創(chuàng)建的。使用四元數(shù)插值時,關(guān)鍵點(diǎn)始終為鏈接狀態(tài),因此在特定時間為三條曲線(x、y 或 z)中的任一條曲線創(chuàng)建關(guān)鍵點(diǎn)也將在此時間為其他兩條曲線創(chuàng)建關(guān)鍵點(diǎn)。
歐拉角插值
歐拉角插值是大多數(shù)人習(xí)慣使用的方法。歐拉角可表示任意范圍的旋轉(zhuǎn),并且?.x、.y?和?.z?曲線相互獨(dú)立。同時圍繞多個軸旋轉(zhuǎn)時,歐拉角插值可能容易出現(xiàn)萬向鎖之類的瑕疵,但如果一次圍繞一個軸進(jìn)行簡單旋轉(zhuǎn),使用起來會很直觀。使用歐拉角插值時,Unity 在內(nèi)部將曲線烘焙到內(nèi)部使用的四元數(shù)表示中。這類似于將動畫從外部程序?qū)?Unity 時發(fā)生的情況。請注意,此曲線烘焙可能會在過程中添加額外關(guān)鍵點(diǎn),并且切線類型為__常量__的切線在子幀級別可能不完全準(zhǔn)確。