我有一顆可以彈跳的子彈。我想知道子彈是在x方向還是y方向彈跳。就像你在圖像上看到的,只有幾個像素的差異讓子彈反彈到另一個方向。 (供參考:是的,子彈可以在我的遊戲反彈;-))Cocos2d:計算與子彈碰撞時的子彈彈跳
有誰知道這個問題的簡單和固溶體?
非常感謝您的幫助
菲利克斯
我有一顆可以彈跳的子彈。我想知道子彈是在x方向還是y方向彈跳。就像你在圖像上看到的,只有幾個像素的差異讓子彈反彈到另一個方向。 (供參考:是的,子彈可以在我的遊戲反彈;-))Cocos2d:計算與子彈碰撞時的子彈彈跳
有誰知道這個問題的簡單和固溶體?
非常感謝您的幫助
菲利克斯
爲了實現反彈,你需要做兩件事情:
第1步:
如果你想正確的,你必須計算矩形邊框的交叉與連接與計算的下一個子彈的位置當前的子彈位置(如果沒有障礙物)的線檢測碰撞。如果有多個交點,則取第一個碰到邊界的交點。在Box2D中,您將使用raycast來獲取交點。
這個問題的答案在這裏將幫助您確定是否有交叉:Detect if line segment intersects square
現在,你需要知道該矩形的側面碰撞發生。 以下方法假定您已經知道有碰撞,但不知道在哪裏:
當子彈的位置在區域B,d,E或G其明顯的,其邊界將被打。
在任何其他情況下,它不是很清楚。讓我解釋它爲區域H:
繼續similarl Ÿ在區域A的情況下,C或F.
第2步:
如果你有交點,設置子彈的交叉點的新位置(如果你無法得到交點,更新位置就好像沒有障礙物一樣,但這會有點不準確)。 如果碰撞發生在底部或頂部,則反轉速度的y分量。 如果碰撞發生在右側或左側,則反轉速度的x分量。
祝你好運!
你使用Box2D或Chipmunk物理? – Felix
當時我沒有使用物理引擎,因爲它應該只是一個坦克遊戲。你建議使用一個嗎?引擎不慢嗎? – KrauseFx
我建議使用Box2D。那麼問題就會消失,因爲Box2D會爲你做。 – Felix