我創建了一個非常簡單的數值模擬,可以模擬一個物體以某個角度從建築物上拋出,並且當物體撞擊地面時,模擬停止。現在我想添加碰撞檢測。我會如何去做這件事? 我知道我需要找到物體(一個球)撞擊地面的確切時間,以及x和y方向的速度以及物體撞擊地面時的位置,而且我必須添加表明球會在衝擊中反彈的參數。但我不知道如何去做這件事。我知道檢測碰撞的方法有很多,但由於我對此很陌生,所以最容易理解的方法是最好的。二維運動中的碰撞檢測
回答
創建一個座標系,地面在y = 0。跟蹤球飛行時的座標,然後檢查它是否有y = 0,這就是它碰到地面的地方。您也可以在球移動時跟蹤x和y速度。
使用物理技巧。 This是一個很好的教程。如果你有它,我推薦Halliday,Resnick和Walker的物理基礎。他們在這方面有很好的一章。
碰撞檢測只涉及確定2個物體之間的距離。
如果你只在對象和地面之間的碰撞有興趣,你可以使用:
if(object.y <= ground.y) {
//collision occurred
}
要做到對象之間的碰撞,你可以通過所有對象循環,以同樣的方式他們互相比較。
我不明白的是如何實現實際的碰撞。發生碰撞時我該怎麼辦? – kachilous 2011-05-26 22:52:29
@ kachilous您可以吸收能量,使物體粘附在地面上。你可以使物體以一半速度在地面上「反彈」。對於這個問題沒有正確的答案 - 這取決於你想要實現它的複雜程度(世界級的物理引擎!),多快(用於遊戲中的實時渲染)以及你的生活有多少寶貴的時間你願意浪費它。 (有可用的「免費」超級真棒物理引擎 - Havok,Bullet等) – 2011-05-26 22:57:03
如果您只是在尋找數學,那麼您可以編寫C代碼。我發現這個有幫助。 Math Models
- 1. XNA二維碰撞檢測
- 2. 最好的二維碰撞檢測
- 3. 簡單的二維碰撞檢測C++
- 4. HTML Canvas遊戲:二維碰撞檢測
- 5. 二維碰撞檢測有趣
- 6. 二維碰撞檢測不起作用
- 7. 三維世界中的碰撞檢測
- 8. 從二維到三維的GJK碰撞檢測實施
- 9. Slick2D碰撞檢測 - 奇怪的運動
- 10. 二維碰撞n體模擬(大量球的快速碰撞檢測)
- 11. Java - 二維平鋪遊戲中的檢測碰撞
- 12. 碰撞檢測對角線運動
- 13. 運動物體碰撞檢測LIBGDX
- 14. 碰撞檢測
- 15. 碰撞檢測
- 16. 碰撞檢測
- 17. 二維六角網格上的碰撞檢測
- 18. 三維碰撞檢測幫助openGL
- 19. 三維導航和碰撞檢測
- 20. 多維邊界框碰撞檢測
- 21. 碰撞檢測不檢測
- 22. java中的碰撞檢測
- 23. pygame中的碰撞檢測
- 24. Android中的碰撞檢測
- 25. cocos2d中的碰撞檢測
- 26. java中的碰撞檢測
- 27. Unity3D中的碰撞檢測
- 28. Box2D中的碰撞檢測
- 29. paper.js中的碰撞檢測
- 30. pygame中的碰撞檢測
[Wham!](http://www.gamasutra.com/view/feature/3015/pool_hall_lessons_fast_accurate_.php)(該鏈接演示了檢測碰撞的快速,準確和「簡便」的方法。) – 2011-05-26 22:50:20
聽起來像2D,而不是1D,運動。 – 2011-05-26 22:53:39
有一些簡單的公式可以找出所有這些信息,除非你需要*來模擬它,你應該只是看看它們。統計通過計算[速度](http://en.wikipedia.org/wiki/Velocity)並從那裏去。 – meagar 2011-05-26 23:18:25