Unity3d 动画系统
Unity3d學(xué)習(xí)筆記 本篇簡單介紹Unity3d中的動畫系統(tǒng)及其使用。
模型導(dǎo)入
以帶動畫的
FBX文件為例,unity版本為5.0以上版本。
新版動畫系統(tǒng)
當(dāng)你導(dǎo)入FBX文件后,會發(fā)現(xiàn)模型具有一個Animator(狀態(tài)機)組件。
我們一般將它成為(新)動畫系統(tǒng),新動畫系統(tǒng)和舊版的動畫系統(tǒng)(unity3d 4.3之前版本)的區(qū)別就在于使用了Animator組件代替了原來的Animation。
舊版動畫系統(tǒng)
同理當(dāng)你使用的是舊版的動畫系統(tǒng)就會發(fā)現(xiàn)是Animation組件。
在高版本的unity3d你可以通過設(shè)置模型的Rig選項設(shè)置動畫的類型。
參數(shù) Animation type
Legacy: 舊版本的動畫
Generic: 通用的動畫
Humanoid: 類人動畫
動畫導(dǎo)入
動畫分割 Animation Clips
你可以將動畫分割成若干個獨立的動畫。
參數(shù) Loop Time :是否循環(huán)播放。
多個模型文件
你也可以使用多個模型文件導(dǎo)入動畫,命名約定——"模型名稱"@"動畫名稱".fbx
如: test.fbx ,test@idle.fbx ,test@move.fbx
動畫的播放和使用
Animator
你需要在項目中新建一個Animator Controller來控制動畫的播放。
然后雙擊切換到Animator視圖
你會發(fā)現(xiàn)有三個默認(rèn)狀態(tài)
Entry: Animator的入口
Any State:任意的狀態(tài)
Exit: 退出狀態(tài)
我們添加兩個狀態(tài)用來表示兩個分別不同的動畫,分別名為idle和move。
idle和Entry狀態(tài)連接表示Animator進來執(zhí)行該動畫,點擊狀態(tài)在motion選擇要執(zhí)行的動畫。
一般入口狀態(tài)為idle 動畫,用來表示模型閑置的狀態(tài)。
再將idle狀態(tài)和move狀態(tài)連接,箭頭指向move,表示從閑置狀態(tài)開始運動。
將move狀態(tài)和idle狀態(tài)連接,箭頭指向idle,表示從運動狀態(tài)轉(zhuǎn)為閑置狀態(tài)。
動畫的Animator(狀態(tài)機)配置好了,我們需要添加一些參數(shù)來作為Animator在各個狀態(tài)之間切換的條件。
在左上角的Prameters中添加兩個bool變量,分別表示模型閑置和移動兩種狀態(tài)。
Prameters參數(shù)類型:
Float:float類型的參數(shù),多用于控制狀態(tài)機內(nèi)部的浮點型參數(shù)。
Int:int類型的參數(shù),多用于控制狀態(tài)機內(nèi)部的整型參數(shù)。
Bool:bool類型參數(shù),多用于狀態(tài)切換。
Trigger:本質(zhì)上也是一個bool類型的參數(shù),但是其值默認(rèn)為false,且設(shè)置為true后系統(tǒng)會自動將其還原為false。
設(shè)置 Idling :true Moving : false
點擊箭頭,為狀態(tài)的轉(zhuǎn)換切換條件
參數(shù) 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");
}
}
}
總結(jié)
以上是生活随笔為你收集整理的Unity3d 动画系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP BTP 平台 CloudFoun
- 下一篇: 将ABAP On-Premises系统连