[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。
這兩個東西差在哪裡?
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。
留言
張貼留言