iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Mobile Development

30天輕鬆學會unity自製遊戲系列 第 7

30天輕鬆學會unity自製遊戲-了解動畫系統

這篇來讓Player加上左右轉的動畫,先在window視窗上開啟Animation->Animatiion(動畫系統)&Animator(動畫控制系統)來準備動畫囉
https://ithelp.ithome.com.tw/upload/images/20210907/2014059867JLAHLNCh.png
把Player裡面的Left0~3跟Right0~3一樣拖曳到Scene場景上,都會要求存取動畫,記得動畫存的位置與名稱等等需要用到,把剛Left跟Right圖像是三角形的拖曳到Player的Animator裡面(兩個灰色方框是動畫控制器別拖曳錯囉)
點擊Left跟Right動畫屬性介面有LoopTime預設是打勾請取消打勾(沒取消等等就會一直重複左轉或右轉…)
https://ithelp.ithome.com.tw/upload/images/20210907/20140598wsLwBoMlbe.png
現在加一個Bool(布林值會傳回true跟false兩種)在Animator左上點Parameters的+號新增兩個布林值控制左轉跟右轉,新增的布林值名稱要記好,等等程式會需要用到
(這裡的布林值名稱等等程式要找一模一樣的名稱,大小寫.符號.空白都會算進去...如果要使用中文也是可以)
https://ithelp.ithome.com.tw/upload/images/20210907/20140598f9WFoeArzB.png
現在要告訴unity甚麼時候要撥放左轉或右轉的動畫,在Player基礎動畫(預設動畫)點右鍵選Make Transition一條箭頭到右轉一條到左轉,
https://ithelp.ithome.com.tw/upload/images/20210907/20140598dGabGZOsff.png
左轉右轉一樣要點右鍵,建立一條箭頭返回到預設動畫,都設定完會有四條線,現在來設定四條動畫線的內容
https://ithelp.ithome.com.tw/upload/images/20210907/20140598rw1tQC0tHa.pnghttps://ithelp.ithome.com.tw/upload/images/20210907/20140598RCg3dVOcme.png
點選動畫線會可以更改進入動畫時間(把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)就會左右轉時就會有不同的動畫囉~


上一篇
30天輕鬆學會unity自製遊戲-讓Player動起來
下一篇
30天輕鬆學會unity自製遊戲-製作子彈
系列文
30天輕鬆學會unity自製遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
chinghunglin
iT邦新手 5 級 ‧ 2021-09-16 01:31:36

Oh~Yeah 我也飛起來了,
這裡要注意的是布林值變數名稱要留意大小寫,變數名稱大小寫要完全一致。

感謝補充
這很重要...

我要留言

立即登入留言