2014年11月6日 星期四

UNITY 3D 人物控制系統 Part 2

上一回我們幫CARL哥他加了一個他閒置時會做的動作

今次就說說如何讓主角可以在場景中快樂地走動吧

1. 先回到Animator 的介面中,在空白的地方RIGHT CLICK --> Create State

--> From New Blend Tree , 現在會出現一個Blend Tree , 按一下這個Blend Tree , 之後到右邊的Inspector更改名稱為walk 後按ENTER , 完成後應該會像下圖一樣



2. 現在為這裡加上一些Parameters , 現在按一下Animator 介面左下角的"+" , 第一個加上的是SPEED(用來判定是否有前進或後退 ,第二個是 DIRECTION (用來判斷角色是否有角度上的改變, 這裡二個我們都是使用Float


3. 現在Double Click "Walk"  --> Parameter 改為direction --> 按圖中的 "+" 三次 (選擇add motion field) 


4. 成功的話應該會像下圖


5. 除消Automate Threshold --> 現在加入你想要的動作 圖中最高我是轉左,中間的是直行, 最底的是轉右, 參數分別是 -1 , 0 ,1 , 代表當你的Parameter 是什麼的時候,決定你執行什麼動作

6. 勾選Automate Threshold , 完成後應該像下圖 

7. 沒有問題的話, 應該會像下圖一樣

8. 現在為他們加上互相關係 --> RIGHT CLICK "Stand_Idle_01"(即是你閒置時的狀況) --> Make Transition 拉向"Walk" --> 再RIGHT CLICK "Walk" --> 拉向"Stand_Idle_01"

9. 按一下 Stand_Idle_01 向 Walk 的箭咀 -->  到右方更改參數為"Speed" --> Greater 改為 0.1 
(這裡的意思是當SPEED大於0.1的時候就會執行"Walk")

10. 按一下 Walk  向 Stand_Idle_01 的箭咀 -->  到右方更改參數為"Speed" --> Less 改為 0.1 
(這裡的意思是當SPEED細於0.1的時候就會執行"Stand_Idle_01")

11. 現在制作了向前行, 及轉左和轉右的動作, 最後為CARL哥加上一段SCRIPT就可以快樂行走啦 (當他向前行的時間 Speed 會等於"1" , 向前行及轉左的時候就會變成"Speed等於1"及 "direction 等於負1")相反你可以用相同的方法制作向後走的動作

12. 最後送上CARL哥的SCRIPT

var anim:Animator;

function Start () {

anim = GetComponent(Animator);

}

function FixedUpdate () {

var h:float = Input.GetAxis("Horizontal");
var v:float = Input.GetAxis("Vertical");
anim.SetFloat("speed", v);
anim.SetFloat("direction", h);

}




熱門文章

Related Posts Plugin for WordPress, Blogger...