Unity3d
學習筆記 本篇簡單介紹Unity3d
中的動畫系統及其使用。
模型導入
以帶動畫的
FBX
文件為例,unity
版本為5.0
以上版本。
新版動畫系統
當你導入FBX
文件后,會發現模型具有一個Animator
(狀態機)組件。
我們一般將它成為(新)動畫系統,新動畫系統和舊版的動畫系統(unity3d 4.3
之前版本)的區別就在於使用了Animator
組件代替了原來的Animation
。
舊版動畫系統
同理當你使用的是舊版的動畫系統就會發現是Animation
組件。
在高版本的unity3d你可以通過設置模型的Rig
選項設置動畫的類型。
參數 Animation type
Legacy
: 舊版本的動畫Generic
: 通用的動畫Humanoid
: 類人動畫
動畫導入
- 動畫分割
Animation Clips
你可以將動畫分割成若干個獨立的動畫。
參數 Loop Time
:是否循環播放。
- 多個模型文件
你也可以使用多個模型文件導入動畫,命名約定——"模型名稱"@"動畫名稱".fbx
如: test.fbx
,test@idle.fbx
,test@move.fbx
動畫的播放和使用
Animator
你需要在項目中新建一個Animator Controller
來控制動畫的播放。
然后雙擊切換到Animator
視圖
你會發現有三個默認狀態
-
Entry
: Animator的入口 -
Any State
:任意的狀態 -
Exit
: 退出狀態
我們添加兩個狀態用來表示兩個分別不同的動畫,分別名為idle
和move
。
idle
和Entry
狀態連接表示Animator
進來執行該動畫,點擊狀態在motion
選擇要執行的動畫。
一般入口狀態為idle 動畫,用來表示模型閑置的狀態。
再將idle狀態和move狀態連接,箭頭指向move,表示從閑置狀態開始運動。
將move狀態和idle狀態連接,箭頭指向idle,表示從運動狀態轉為閑置狀態。
動畫的Animator
(狀態機)配置好了,我們需要添加一些參數來作為Animator
在各個狀態之間切換的條件。
在左上角的Prameters
中添加兩個bool
變量,分別表示模型閑置和移動兩種狀態。
Prameters
參數類型:
-
Float
:float類型的參數,多用於控制狀態機內部的浮點型參數。 -
Int
:int類型的參數,多用於控制狀態機內部的整型參數。 -
Bool
:bool類型參數,多用於狀態切換。 -
Trigger
:本質上也是一個bool類型的參數,但是其值默認為false,且設置為true后系統會自動將其還原為false。
設置 Idling :true Moving : false
點擊箭頭,為狀態的轉換切換條件
參數 Has Exit Time
:表示在動畫播放完才會切換到下一動畫。
最后使用代碼控制動畫:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
private Animator _animator;
void Start()
{
_animator = this.GetComponent<Animator>();
}
void Update()
{
if( Input.GetKeyDown("q") )
{
_animator.SetBool ("Idling",false);
_animator.SetBool ("Moving",true);
}
if( Input.GetKeyDown("w") )
{
_animator.SetBool ("Idling",true);
_animator.SetBool ("Moving",false);
}
}
}
Animation
你可以通過 play Automatically
選擇是否自動播放或是
代碼控制:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
Animation _animation;
void Start() {
_animation = GetComponent<Animation>();
}
void Update(){
if( Input.GetKeyDown("q") )
{
_animation.Play("Take 001");
}
if( Input.GetKeyDown("w") )
{
_animation.Play("Take 0010");
}
}
}