2014-01-05 51 views
3

我正在創建一個自上而下的2D基於tile的遊戲,並且在設置box2d以特定方式工作時遇到了一些麻煩。box2d,不能互相推送的動態物體

基本上,我需要的是讓所有的Box2D機構要遵循一定的規則集: 1)它們不重疊 2)他們不互相推 3)他們仍然發生碰撞,並提供碰撞聯繫人列表

我已經將重力設置爲0,並且只用setLinearVelocity移動我的身體,因爲我需要它們以恆定速度移動,並且沒有任何慣性效應。

它看起來像我需要一個靜態的身體,但可以手動移動一個。

我以爲我可以使用運動機構,但事實證明,它們相互重疊,沒有聯繫人列表。

有沒有辦法讓一個可以碰撞但不能相互推動的固體?

回答

0

嘗試將質量設置爲無窮大 - 這應該防止它們被其他對象移動,同時仍然可以手動設置其速度。如果這不起作用,請嘗試將質量設置爲0.

+0

= \如果我將質量設置爲無窮大 - 他們開始像運動物體(具有重疊和東西)一樣行動。而且0也沒有幫助。 –

+0

嗯。他們可能會像運動機構一樣行事,但他們並沒有失去他們的聯絡名單。所以我只需要停止與其他機構聯繫的機構,也許這將是足夠的 –

0

一種方法是爲每個動態物體創建一個運動物體作爲「陰影」物體,使用完全相同的裝置。在非常時間步後,將運動體的位置,角度,線速度和角速度設置爲與其所在的動態體相匹配。

原始動態夾具應設置爲不與其自己的陰影夾具相撞,並且不得與具有陰影體的原始夾具相撞。

當這樣兩組物體發生碰撞時,它們的陰影體將阻止相對的動體推動它們,但它們仍然可以與世界上其他裝置正常碰撞。

請記住,Box2D非常難以複製我們在現實世界中看到的物理現象,並且您在這裏要求的東西根本不現實。您可能會看到一些非常奇怪的行爲,特別是如果您嘗試將這些物體堆疊在一起,即使它們遵循了您的規則。但是,對於不需要堆放物體的自上而下的情況,這可能是好的。

相關問題