1. 程式人生 > >判斷動畫狀態機當前播放的動畫。

判斷動畫狀態機當前播放的動畫。

   Animator  thisAni;//自身的動畫控制器
    private void Awake()
    {
        //獲取自身的動畫控制器
        thisAni = this.GetComponent<Animator>();
    }


    float speed = 0;
    public int tempNumber = 0;
    private void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            speed += Time.deltaTime * 0.1f;
           
            thisAni.SetFloat("speed", speed);
            speed = Mathf.Clamp01(speed);
        }


        ////設定索引圖層的權重
        //thisAni.SetLayerWeight(2, 1);


        //AnimatorStateInfo 動畫層狀態資訊類
        //GetCurrentAnimatorStateInfo 獲取動畫控制器中指定層的狀態資訊
        AnimatorStateInfo info = thisAni.GetCurrentAnimatorStateInfo(0);
        //獲取當前動畫狀態的雜湊值
        tempNumber = info.shortNameHash;
        
        //這句程式碼只是將字串轉換成雜湊值 其他沒什麼卵用
        print(Animator.StringToHash("Blend Tree"));


        //判斷當前狀態是否為跑
        print("當前狀態:" + Animator.StringToHash("Run").Equals(tempNumber));
    }