2011-07-29 71 views
1

我有一個球和一顆炸彈。我需要做的就是,當球與炸彈相撞時,炸彈爆炸將球從與炸彈相反的方向推離球拋出。炸彈 - Cocos2d/Box2d

例如,如果球被拋出45度然後撞上炸彈,炸彈爆炸並以-45度的角度將炸彈推離炸彈。

這可能嗎?如果有的話,有人能帶領我走向正確的方向嗎?

回答

2

這是可能的。實施你自己的b2ContactListener來查找炸彈球碰撞。然後根據它的位置和炸彈位置對線球施加線性衝量。

+0

我有一個b2ContactListener,但我找不到任何線性衝動 – Jonathan

+1

有一個方法ApplyLinearImpulse的b2Body – Andrew

0

如果你想完全放棄物理模擬(這幾乎是你寫的),那麼你可以不使用Box2D,或者只能用於碰撞檢測。

要僅將它用於碰撞檢測,您只需將您的身體設置爲傳感器,並在檢測到碰撞時將其以您想要的角度發送(將角度減去或相加,當範圍的最大值爲滿足)。

如果你想使用物理模擬(對我來說更有意義),那麼只需使用正確的掩模將它們設置爲相互碰撞並根據需要設置恢復原狀(彈性)即可。這聽起來像你可能希望你的球是一個動態的物體,你的炸彈是靜態的(我認爲這就是他們所說的)。

顯然,無論哪種情況,您都需要設置任何動畫或粒子發射器來觸發碰撞。

+0

我仍然想使用Box2D爲我的應用程序。我所說的只是當球與炸彈相撞時,炸彈被摧毀,並且哪個角度玩家將球「彈」在炸彈中,球就會朝相反的方向移動。例如。球以45度的角度朝着炸彈「輕彈」,炸彈以-45度角爆炸迫使球(基本上,如果他們將球向右彈向炸彈並且球擊中炸彈,則彈力它在左邊) – Jonathan

+0

那麼如果你想要完整的物理模擬,那麼你不必擔心45度角方面(或任何角度)。只要使炸彈具有非常大的質量或將其設置爲靜態物體即可。實際上,這甚至不是必須的,但你可能想要調整這些東西以獲得你想要的方式的碰撞反應。在完成碰撞後,您只需移除炸彈體,球就會自行反彈。 –

0

當球和炸彈發生碰撞時,不用對線球施加線性衝擊,你可以嘗試在很短的時間內增大炸彈的體積。放大炸彈的大小後,你可以摧毀炸彈的身體。

放大的彈體會將球推向正確的方向。