2011-07-09 70 views
0

存在這樣的情況:對象「A」落在靜態對象「B」上,但是當「A」落在「B」上時,在「A」和「B」之間存在跨度。如何解決問題?對象之間的較遠距離

+0

你確定你在屏幕上看到什麼,物理引擎在做什麼,是一樣的嗎? Box2D具有調試繪製功能來幫助實現這一點。 – iforce2d

+0

我調試並看到值不正確,例如,y coord是「3.598」,但應該是3.6! –

回答

1

Box2d正在使用迭代求解程序,仿真質量取決於您在仿真中使用的數值。例如,在box2d手冊中,建議將動態主體的尺寸保持在[0.1,10]的範圍內。精度爲0.002(來自您的評論)是一個非常好的。

所以有兩種方法可以解決您的問題。更改您使用的測量系統或增加位置和/或速度迭代。第一種方法更好,因爲它不會增加計算時間。

+0

我找到了從他的演示文稿中縮小物理對象的解決方案,例如,我有紋理塊60x60像素,所以我創建了58x58的物理矩形,這有所幫助。 –

0

的Box2D有b2_linearSlop參數(在PhysX物理AKA「皮膚」)

這是一個有點除了幾何形狀,以提高物理模擬的穩定性的大小。也許它會導致你描述的文物。

試圖尋找在Box2D的源代碼中包含以下字符串(我已經採取了它從原來的Box2D的閃存接口,不過它應該是其他平臺相同):

/** 
* A small length used as a collision and constraint tolerance. Usually it is 
* chosen to be numerically significant, but visually insignificant. 
*/ 
static public const b2_linearSlop:Number = 0.005; // 0.5 cm