2014-01-11 53 views
0

我正在學習如何使用Unity3D,並且我處於動畫問題。我有一個GameObject,這是我的角色,我想讓他跳。首先,我使用鍵盤的輸入,空格鍵。使用AddForce的不同力值不會改變遊戲對象的速度

jumpForce是公衆持股量的變量,並將其值是700

if (grounded && Input.GetKeyDown(KeyCode.Space)) { 
    anim.SetBool("Ground", false); 
    rigidbody2D.AddForce(new Vector2(0, jumpForce)); 
} 

然後我試圖讓從XBOX360控制器墊輸入和一切都很好。但是使用相同的代碼(只是將GetKeyDown更改爲控制器的GetButton),字符跳轉得更高。使用控制器時,達到的最大速度是53(我得到的是rigidbody2D.velocity.y的值),但是用鍵盤的值是13。 ,但是如果我將它設置爲0,角色不會跳躍。

我想知道哪個是變量jumpForce和函數AddForce的實用程序,如果它不改變速度的值。謝謝

+0

你確定你輸入了if? – Roberto

+0

當然,如果我將jumpForce設置爲0,則該字符根本不會跳轉。 – Astinog

回答

1

得到更全面的答案,如果您正在使用物理處理,那麼你可能正在使用Update而不是在嘗試不同的行爲FixedUpdate,也就是說,你正在以不同的速度施加力量。

按照documentation

FixedUpdate應與剛體打交道時可以用來代替更新。例如,在向剛體添加力時,必須在固定更新內的每個固定幀上應用力,而不是Update內的每個幀。

相關問題