2013-02-18 124 views
2

我使用body.setTransform來移動我的一些物體。 我知道這是不好的,但它只是它需要在我的情況下 - 機構遵循特定的路徑。當這樣的物體被子彈擊中時,它停止在路徑上移動(body.setTransform()不再被稱爲) 並且它允許物理學起作用。box2d,setTransform和碰撞

問題是,有時候身體會發癢 - 它好像接觸力等被應用到不同的身體值(座標等)。 因此,它開始旋轉,蒼蠅投擲其他屍體。

這顯然是body.setTransform()的問題,因爲當我將 移動到路徑上時,所有物理都沒有問題。我的谷歌調查結果也證實 body.setTransform()可能搞砸了物理。

我試圖在接觸後將所有速度設置爲0。這取消了聯繫 影響和身體不動。但是它的'物理數據'似乎仍然被破壞了 - 當它被事後擊中時,它不會正確行事。

是否有任何方法來「重置」使用body.setTransform() 鍛鍊過的身體,以便它再次正常工作?

+0

身體本身並沒有嚇倒。渲染器沒有正確渲染它。 – Dzik 2013-02-18 17:18:41

回答

2

使用b2MouseJoint沿着路徑移動身體並保持正確的物理行爲。

+0

我從來沒有使用它,但它可能是值得一試。我還有一個問題。該路徑用於避免STATIC障礙物,並且與body.setTransform()完美配合使用。也有身體可能遇到的動態障礙。即使身體遇到動態障礙,它也不會影響它保持良好的路徑。它只是推動DYNAMIC障礙,仍然避免STATIC。如果我在這種情況下使用鼠標連接,當碰到動態障礙時身體路徑會受到影響嗎?這個關節強壯到足以讓身體保持在路上嗎? – Dzik 2013-02-18 12:35:51

+0

@Dzik:所有的身體都會影響它。據我所知,鼠標關節只是一個b2DistanceJoint--所以我只想嘗試玩參數,但我認爲它會足夠強大。爲了避免與靜態物體碰撞,您可以使用接觸式過濾(b2Filter) – Andrew 2013-02-18 16:55:24