遊戲設計 Animation
User Define Animations 對於長期反覆操作,或是簡易性質上的改變,可以 利用預錄動畫的方式,透過設定關鍵影格以及內插 曲線,製作使用者自訂的預錄動畫。
User Define Animations 首先先創立一個Cube並 點擊該物件,並使其位 置回到原點(0,0,0)的 位置。
User Define Animations 接著在 [Window -> Animation] 打開 Animation 視窗
User Define Animations 跳出Animation視窗以後 選擇[Create] 將會新增一個Animator在cube上
Cube Moving Animations 輸入動畫名稱 cube_move,並且存檔
Cube Moving Animations [重要]選擇左下方Curves (在Dope Sheet 右方) 接著會看到0:00的位置有一條 紅線
Cube Moving Animations 1. 2. 3. 1.點選 [Add Property] 按鈕 2.選擇Transform旁的三角鍵號 3.選擇Position旁的十字鍵號
Cube Moving Animations 1. 2. 1.會看到左方加入Position屬性 2.右方多了兩個菱形的圖案 稱為Key Pose
Cube Moving Animations 將滑鼠移到0:30的地方點選右鍵 選擇[Add Key]
Cube Moving Animations 1. 2. 會看到以下兩個不同的地方 1.紅線跑到0:30的地方(重要) 2.0:30的地方多了第三個菱形圖案
Cube Moving Animations 接著我們在Scene視窗中,拉動黃色的軸,向右方拖曳
Cube Moving Animations 拖曳完以後,會自動內插出移動的曲線如下圖
Cube Moving Animations 接著按下撥放,就可以看到剛剛錄製的動畫 1. 2.
Cube Moving Animations 開始實作
Cube Moving Animations 1.我們再點擊一次錄製 2.用滑鼠左鍵拉動紅色時間軸(上方) 3.拉動至1:00的位置
Cube Moving Animations
Cube Moving Animations 拖曳完以後, 我們會看到曲線有所變化
Cube Moving Animations 將滑鼠移到1:30的地方,點選右鍵,選擇[Add Key]
Cube Moving Animations 1.用滑鼠左鍵拖曳紅色時間軸 2.拉動至1:30的位置
Cube Moving Animations
Cube Moving Animations 拖曳完以後,我們會看到曲線有所變化
Cube Moving Animations 將滑鼠移到2:00的地方,點選右鍵,選擇[Add Key]
Cube Moving Animations 1.用滑鼠左鍵拖曳紅色時間軸 2.拉動至2:00的位置
Cube Moving Animations
Cube Moving Animations 完成後的曲線
Cube Moving Animations 開始實作
整理曲線的方式 1.我們可以直接以左鍵點擊Key Pose拉動位置
整理曲線的方式 將沒有重合的Key Pose用拖曳的方式重合
整理曲線的方式 2.我們可以直接以右鍵點擊Key Pose, 決定他的內插方式
整理曲線的方式 設定該點的內插方式 1.自動內插(預設) 2.自由內插 3.水平內插 4.單邊內插
整理曲線的方式 自由內插以及水平內插左右會多出兩個控制點,拖曳任意一 個控制點,皆會影響另一個
整理曲線的方式 單邊內插拖曳控制點不會影響另一邊
整理曲線的方式 設定點與點之間的內插方式
整理曲線的方式 點選左邊 Positon.x 可以只整理特定軸向的曲線
整理曲線的方式 以右鍵點選KeyPose可以選擇與其他點(左邊,右邊,或 雙邊)的內插方式 1.自由內插 2.線性內插 3.常數不內插
整理曲線的方式 當我們選擇自由內插時,會多出兩個控制點自由拖曳,控制 點之間不會互相影響
整理曲線的方式 線性內插會以最短路徑算出與下個控制點的直線距離 常數不內插,到下一個控制點維持常數
整理曲線的方式 對著左邊的控制點按右鍵,選擇[右邊->線性內插]
整理曲線的方式 對著右邊的控制點按右鍵,選擇[左邊->線性內插]
錄製新的動畫 點選目前的左上角動畫名稱,可以錄製新的動畫
錄製新的動畫 按照剛剛的方法,製作一個會上下移動的動畫
錄製新的動畫 動畫完成以後的曲線
小技巧 :Local動畫 原本的動畫只能在特定的位置上播放,如果希望他以相對作 標分別撥放的話(例如:只想要一套動畫,但是想要在不同作 標上面執行),可以新增一個空物件,並且讓模型成為其子 物件,該物件便可成為local動畫,要移動時移動該空物件 即可。
練習題:行星移動 請利用Local動畫達成行星公轉和自轉的動畫效果。
Animator 當你錄製動畫時, 會自動創立一個與該物件同樣名稱的Animator, 在Project視窗中雙擊後即可編輯。
Animator
Animator 右鍵點擊動畫狀態[Set as Layer Default State]橘色表示 該物件的預設動畫
參數設定 Project視窗中點選動畫,可以決定該動畫的循環性質 Loop Time -> 循環播放動畫 Loop Pose -> 會自動將第一與最後一個影格調整相同
參數設定 在Animator視窗中,點選動畫我們可以設定動畫的速度 (負數倒著播放)
控制網路上下載來的模型動畫 點選模型,在Rig類別當中的Animation Type必須要為 [Humanoid]才能使用Animator控制。
Create Animator Controller
Create Animator Controller 點擊剛剛創出來的動畫控制元,會看到右邊的視窗
State Machine 將idle、attack、jump三個動畫分別拉進Animator視窗 (注意:第一個拉進去的會成為預設的動畫,橘色)
State Machine
State Machine 開始實作
State Machine 這時候如果將Animator Controller 拖曳進女孩物件的 Animator->Controller中,按下 執行遊戲時,便會播放預設的動 畫。
State Machine 回到Animator視窗,先點選左上角的Parameters,接著再點 選旁邊的+號,新增兩個Trigger型態的參數。
State Machine 將參數名稱分別改為attack與jump
State Machine 對著Idle動畫點選右鍵 選擇Make Transition
State Machine 對著Idle動畫點選右鍵 選擇Make Transition以後,會跑出箭 頭,拖曳至attack動畫,再選擇Make Transition一次,再拖曳 至jump動畫
State Machine 用同樣的方法,分別製作兩個反向的箭頭,完成如下圖
State Machine 點選idle->jump方向的箭頭(注意 不要點錯!),會看到如右圖的視 窗,可以預覽轉換動畫。
State Machine 點選Conditions下方的+號並且將Conditions改成jump,接 著將Has Exit Time反勾選。
State Machine 點選idle->attack方向的箭頭用同樣的方式Conditions設定 為attack,並且記得Has Exit Time要勾選掉。
State Machine 開始實作
Sword_Girl_Controller.cs
BlendTree 在idle動畫上面點選右鍵 Create new BlendTree in State
BlendTree 在idle動畫上面點兩下左鍵,會看到下面的視窗
BlendTree 將預設的Blend參數名稱改為speed
BlendTree 在右側Inspector視窗中,左鍵點選下方的加號,新增三個 Motion Field
BlendTree 接著按照順序Idle、Walk、Run 拖曳進三個Motion Field
BlendTree 1.反勾選 2.調整Threshold Automate Threshold Idle 0 Walk 0.2 Run 0.5
BlendTree
Sword_Girl_Controller.cs
Sword_Girl_Controller.cs
State Machine 開始實作
Legacy Animation 點選模型,在Rig類別當中的Animation Type為Legacy必須 手動以code控制模型動畫
匯入的模型 匯入模型,點選檔案以後可以看到模型在右下角預覽
調整模型動畫格式 點選上方的[Rig]並且將動畫格式選為Legacy
調整模型動畫格式 選擇[Animations] 勾選Import Animation 點選Apply
調整模型動畫格式
調整模型動畫格式 點選Take 001的Clips
調整模型動畫格式 這是一個1300個frame的動畫, 我們可以按左方鍵頭預覽這個 動畫
切割動畫 通常沒有切割過的動畫 作者會告訴你如何切割影格 例如0~240 frame是idle 241~263是running 264~314是waitingforbattle … 以此類推
切割動畫 因為總共有七個動畫 所以我們點擊+號六次(原本已經有一個)
切割動畫 1.點擊Clips 2.改變動畫名稱 3.設定起始frame 4.設定結束frame 反覆設定7次(按照作者指示)
切割動畫
匯入模型
Skeleton_Controller.cs