[Unity]Input.GetAxis 與 Input.GetAxisRaw 的比較

Unity開發時,控制動作一定會用到Input.GetAxis,但有時也會看到 Input.GetAxisRaw
這兩個東西差在哪裡?

Input.GetAxis 依據官網的說法,會回傳軸向的值,數值區間在-1~1之間。
Input.GetAxisRaw 會回傳軸向的值,數值區間在-1~1之間。但不經過平滑處理。

這樣會產生甚麼差異呢?



簡單的用下方Code讓它回傳值看看
    private void Awake()
    {
        StartCoroutine(PrintV());
    }

    private void FixedUpdate()
    {
        v = Input.GetAxis("Vertical") ;
        h = Input.GetAxis("Horizontal") ;
        vr = Input.GetAxisRaw ("Vertical") ;
        hr = Input.GetAxisRaw("Horizontal") ;
    }

    IEnumerator PrintV() //每秒秀一次Debug資訊
    {
         while (true)
        {
            Debug.Log("v = " + v + " h = " + h + " vr = " + vr + " hr = " + hr + " AT" +Time.time);
            yield return new WaitForSeconds(1);
        }
    }

當我們輸入軸向資訊的時候,我們可以觀測到
GetAxis        的值會在  -1~1 之間。如-1,-0.354,0,0.798,1。
GetAxisRaw 的值亦會在  -1~1 之間。但是為整數。如-1,-0,1。

結論 :

如果我們做的移動有類似緩步啟動的加速度的話,用 GetAxis會比較適合些。
如果只是一般的有/無,則可以使用GetAxisRaw。

留言

熱門文章