2017年11月16日 星期四

Unity程式設計初體驗(四)-下載動畫遊戲物件及簡易控制

Unity提供商城,供設計師選購遊戲元件,有許多的遊戲元件都是免費的,本文將介紹如何下載,以及簡易的使用方式。



大家可以查看下列動畫就可以得知Zombie 0_1的功能


動畫流程狀態圖


從上圖我們可以很清楚地看到,動畫轉換的狀態圖,動畫狀態的起始點是idle0,經由idle0可以到其他地方如skill0, wound, run等,除了Exit狀態外,idle0可以到達任何狀態。我們可以在Script目錄中找到PlayGUI.cs,在這個檔案內您可以找到switch關鍵詞,switch代表著可以多選一,我們可以經由現在狀況(currentState)的變數,來決定要切到那一狀態,例如:"run", attack0等。animator[j].SetBool("idle0ToIdle1", true);我們可以經由動畫陣列中SetBool來設定動畫的狀態值,以此例就是要從idle0切換到idle1。

switch (currentState) {

 case "idle1":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToIdle1", true);
}

break;
case "run":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToRun", true);
}
break;
case "attack0":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToAttack0", true);
}
break;
case "attack1":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToAttack1", true);
}
break;
case "skill0":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToSkill0", true);
}
break;

case "wound":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToWound", true);
}
break;
case "death":
for (int j = 0; j < animator.Length; j++) {
animator[j].SetBool("idle0ToDeath", true);
}
break;

default:
break;
}
currentState = "";
}

4 則留言: