由於 Unity 4.3 發佈了 2D Tools 以及為 Animation 及 Animator 做了更進一步的整合,使得以往我們在 Animation view 為 GameObject 建立 Animation Clip 時,Unity 會自動為我們在 GameObject 掛上 Animation component 的行為變成了自動幫我們掛上 Animator component,使用者在 Animation view 的操作習慣也必須有所調整;而 Unity 並沒有因此而廢棄掉原本的 Animation component,所以將專案更新為 Unity 4.3 並不太會發生問題,可是當我們想使用到 PingPong 時,會發現到 Animation view 再也找不到那個設定選單了,那麼應該在哪裡設定呢?
Unity 4.2.2 以前的 Animation view |
Unity 4.3 開始看不到 Wrap Mode 選單 |
Unity 4.2.2 以前也可以在 Inspector view 設置 Animaion Clip 的 Wrap Mode |
Unity 4.3 的 Animation Clip 在 Inspector view 可以看見明顯的不同 |
切換到 Debug view |
在 Debug view 中將 Wrap Mode 變更為 PingPong |
Animation Clip 的 Animation Type 設定在 Unity 4.3 之前就已經有了,只是原本預設值是 1,所以在沒有特殊需求會去改到這個值的情況下,我們並不太會去注意到它,直到 Unity 4.3 開始,新建立的 Animation Clip 的 Animation Type 預設值變為 2,所以也使得 PingPong 失去效用;可見 Unity 4.3 已使新的動畫系統更加完善了,因此,還未開始使用 Unity 4.x 新動畫系統的使用者,要記得將 Animation Type 改回 1。
Unity 4.3 之前 Animation Type 預設值 1 |
Unity 4.3 以後 Animation Type 預設值 2 |
1. 在 Project view 點擊 Animation Clip 檔案。
2. 在 Inspector view 點開右上角 Lock 旁邊的選單。
3. 選擇 Debug。
4. 將 AnimationType 欄位設定為 1。
5. 將 WrapMode 欄位設定為 PingPong。
6. 確認 GameObject 上有 Animation component,並將該 Animation Clip 拉到 Animations 欄位上。
7. Play。
比較需要注意的是 GameObject 上究竟是有 Animation component 還是 Animator component 必須要先搞清楚,當 Animation Type 設為 1 時,即使 Animator view 已有該 Animation Clip,這個 Animation Clip 是沒辦法運作的,反之亦然,當 Animation Type 設為 2 時,即使 Animation component 已有該 Animation Clip,也是不會有動作的,當然這種使用錯誤的情形,在執行遊戲時,Console view 會有相關訊息顯示出來。
為什麼 Unity 4.3 會將動畫系統改成沒有 Wrap Mode 呢?
對於習慣使用原本的動畫系統的使用者應該會有這種疑問,特別是還沒開始使用新系統的人應該更為不解,答案就是已經沒有設置 Wrap Mode 的必要,因為只要做個簡單的 Animation Clip 就可以在 Animator view 中輕鬆的設計各種不同的 PingPong 動作,而且可視覺化的更方便於觀察狀態。
普通的 PingPong |
速度變化的 PingPong |