這篇來讓Player加上左右轉的動畫,先在window視窗上開啟Animation->Animatiion(動畫系統)&Animator(動畫控制系統)來準備動畫囉
把Player裡面的Left0~3跟Right0~3一樣拖曳到Scene場景上,都會要求存取動畫,記得動畫存的位置與名稱等等需要用到,把剛Left跟Right圖像是三角形的拖曳到Player的Animator裡面(兩個灰色方框是動畫控制器別拖曳錯囉)
點擊Left跟Right動畫屬性介面有LoopTime預設是打勾請取消打勾(沒取消等等就會一直重複左轉或右轉…)
現在加一個Bool(布林值會傳回true跟false兩種)在Animator左上點Parameters的+號新增兩個布林值控制左轉跟右轉,新增的布林值名稱要記好,等等程式會需要用到
(這裡的布林值名稱等等程式要找一模一樣的名稱,大小寫.符號.空白都會算進去...如果要使用中文也是可以)
現在要告訴unity甚麼時候要撥放左轉或右轉的動畫,在Player基礎動畫(預設動畫)點右鍵選Make Transition一條箭頭到右轉一條到左轉,
左轉右轉一樣要點右鍵,建立一條箭頭返回到預設動畫,都設定完會有四條線,現在來設定四條動畫線的內容
點選動畫線會可以更改進入動畫時間(把Has Exit Time取消打勾)不用緩衝直接離開,conditions要設定甚麼狀況下要進入此動畫Player->Left的動畫線(左轉true)Right->Player(右轉false)四條都設定好就可以去更改一下程式
開啟Player的PlayerControl
public class PlayerControl : MonoBehaviour
{
//新增動畫控制器叫anim
private Animator anim;
private Rigidbody2D rig;
[SerializeField]float speed = 5f;
float horizontalMove;
private void Start()
{
//取得unity的動畫控制器放到anim
anim = GetComponent<Animator>();
rig = GetComponent<Rigidbody2D>();
}
private void Update()
{
horizontalMove = Input.GetAxisRaw("Horizontal");
}
private void FixedUpdate()
{
Move();
}
void Move()
{
rig.velocity =
new Vector2(horizontalMove * speed, rig.velocity.y);
//如果水平移動的數值大於0.2的話執行下面的大括號內容
if (horizontalMove > 0.2f)
{
//設定動畫控制器名叫right的值為true
anim.SetBool("right",true);
}
//如果水平移動的數值小於-0.2的話執行下面的大括號內容
if (horizontalMove < -0.2f)
{
//設定動畫控制器名叫left的值為true
anim.SetBool("left", true);
}
//如果水平移動的數值介於0.2~-0.2之間的話執行下面的大括號內容
if(horizontalMove < 0.2f && horizontalMove > -0.2f)
{
//設定動畫控制器名叫right的值為false
anim.SetBool("right", false);
//設定動畫控制器名叫left的值為false
anim.SetBool("left", false);
}
}
}
按▶飛機(按左右或AD)就會左右轉時就會有不同的動畫囉~
Oh~Yeah 我也飛起來了,
這裡要注意的是布林值變數名稱要留意大小寫,變數名稱大小寫要完全一致。
感謝補充
這很重要...