2013-12-11 99 views
3

我遇到了Box2D的問題。C++ Box2D,通過運動物體模擬動態身體行爲

我編了一個像這個魔獸爭霸3地圖的遊戲。

http://www.youtube.com/watch?v=PKa1CNw6Q5A

,你控制一個字符,可以拋出可與物體發生碰撞的火球。

對於火球和支柱之間的碰撞,例如我爲兩者使用了運動物體(通常它們不會相互碰撞,但是通過黑客我得到了它的工作),這很好,因爲我只需要跟蹤碰撞,而且不能使用因爲我不希望它們在碰撞時被分開(OnTouch行爲在拼寫腳本中實現)。

但是現在我需要支柱和角色之間的碰撞,所以基本上我希望它們的行爲像橡皮球,當角色被投擲時速度x對着它應該反彈的支柱。但爲此,我需要動態物體的行爲,那麼是否有一種簡單的方法來模擬具有運動物體的動態物體的行爲? (也許覆蓋的東西?)

我不知道如何Box2D實習實習生,並會很高興如果有人瞭解我的問題,並可以幫助我。

+0

如果您不希望聯繫人執行任何碰撞響應,您可以在BeginContact回調中調用contact-> SetEnabled(false)。 – iforce2d

回答

3

聽起來好像你需要爲所有事物使用動態物體,但是更明確地控制它們在發生碰撞後的反應。例如,所有「子彈」就像傳感器一樣,或者使用組ID或掩碼位來使其不與其他物體發生物理碰撞。儘管沒有碰撞響應,但您可以創建一個回調來檢測碰撞並根據此回調決定要執行的操作。

黑客的物理看起來像你可能破壞穩定可靠的事情......自己做了這件事,我很欣賞這種傾向。

看看this tutorial和緊接它之後的那個。他們真的有很好的信息(不,他們不是我的......)。

有關聯繫人篩選的更多信息,請查看此other article

+0

以某種方式幫助我,我現在得到了99%的行爲我想要的,唯一我沒有得到的是,當1個字符移動到另一個,另一個被推開,但生病了解決方式,不知何故,謝謝 –

+0

我想你可能需要添加某種接觸式過濾。我在帖子中添加了第二個參考。如果你不想讓屍體發現,你可以讓它們成爲不同羣體的一部分(朋友碰撞,敵人互相傷害和碰撞等)。要弄清楚的關鍵之一是**你希望根據不同的羣體做出迴應。 – FuzzyBunnySlippers

0

我建議你看看Chipmunk庫!

這是一個物理引擎(2D),用C編寫。我用它在我的項目中,效果很好!