2013-02-08 79 views
8

我使用box2d進行物理模擬。當按下某個鍵時,通過對身體施加衝擊,使用箭頭鍵移動一個圓圈。不幸的是,這個圈子極其緩慢地移動,似乎並不像一個真實的身體所應該加速的那樣。 我的世界尺寸爲400x800像素。圓體的半徑是20f。使用box2d時速度有沒有上限?

this,這個問題可以通過它創建和繪畫中得到體位後放大的時候縮放圓半徑下來解決。它似乎沒有任何區別。我在這裏錯過了一些步驟或設置?

Code on pastebin

+0

你能分享相關的代碼嗎?例如。身體的建設等。 – Tom 2013-02-08 14:04:06

+0

@Tom在pastebin上添加了代碼鏈接。我使用box2d和libgdx遊戲引擎 - 所以代碼是用Java編寫的。 – ivymike 2013-02-08 14:14:19

+1

你實際上是在某個地方的圓上應用衝動嗎? 'ApplyLinearImpulse' – Tom 2013-02-08 14:23:18

回答

3

對了,還有你使用的尺寸之間的差別。 Box2d對浮點數進行操作,因此其精度有限且仿真質量不同。 Box2d被調整爲適合尺寸爲0.1 to 10的動態物體。

所以一般你應該更喜歡使用一個單位的物理和其他圖形

現在你的問題。身體的速度受碰撞,摩擦(如果一個身體滑過另一個身體)和linear damping。因此,請檢查您使用的linear damping的值(我記得默認情況下它不是零)。就我所知,沒有速度限制,但如果使用相同的時間步長,則較高的速度將提供較少的質量衝突。

+1

不幸的是設置線性阻尼爲零也沒有幫助: – ivymike 2013-02-08 15:49:13

19

現在我花了相當長的時間才明白,但實際上在Box2D中實際上確實存在對速度的嚴格限制。請參閱here

每個時間步長的最大移動限制爲2.0個單位,在源代碼中的文件b2Settings.h中給出。

如果您在60FPS時每幀有一步,那麼您的身體可以以120m/s的最大速度移動。也許這一天會爲某人節省一點時間。