2014-10-27 73 views
-2

我正在學習libgdx。我想使用libgdx創建一個2d fps遊戲,這基本上沒有物理環境。在這種情況下,會發生很多碰撞(例如很多子彈擊中多個物體)。我需要檢查每個精靈的矩形與其他精靈的相交。通過這種方式,可能會有數千個精靈,每次檢查其他999個精靈的每個精靈並不是一個好主意。如何檢測libgdx中兩個精靈之間的碰撞?

  • libgdx有scene2d哪個命中檢測api的,是解決我的問題嗎? 或
  • 我應該使用box2d碰撞檢測? 或
  • 是否有任何其他方式來檢測libgdx中的衝突?

回答

3

我想創建一個2D FPS遊戲

,就像我知道FPS的意思是「第一人稱射擊遊戲」 - >使用第一人稱視角射手。這意味着它是3D。
所以請澄清你的意思。

現在至碰撞檢測問題:

  1. Scene2D熱播檢測用於類觸摸或 mouseevents輸入。所以用它來檢測,如果Actor被觸摸,點擊 ...
  2. Box2D是一款2D物理引擎不僅能爲你做碰撞 檢測,但它也可以做碰撞響應以及 作爲物理模擬(重力和類似的東西)。
  3. Libgdx提供Intersector類,您可以使用它來測試
    overlap測試。碰撞 的組織/管理由您決定。

,如果你告訴我們你的遊戲應該如何工作這將是更好,你的世界應該如何管理等
例如,如果你的世界tilebased,牆壁和球員之間的碰撞檢測可以是簡單的檢查瓷磚是否被佔用 - >碰撞,如果不是 - >不碰撞。
此外,瞭解對象的形狀也很重要。矩形 - 矩形碰撞檢測不同於矩形 - 圓形碰撞檢測。
所以現在有您的問題3個解決方案:
- 使用Box2D閱讀有關如何使用它
教程 - 請在碰撞檢測一些研究,閱讀教程和看看一些樣本項目
- 給我們更多關於遊戲,它的對象,他們的形狀等信息。

+0

明白了..首先我的遊戲就像不是基於平鋪的。我不知道第一人稱射擊遊戲是什麼意思,但我的遊戲就像玩頂級視圖的使命召喚。所以它的2D並沒有必要添加物理學,並且會有很多敵人,車輛,子彈,掩體等等。所以你提到Intersector類和一些碰撞檢測算法解決了我的問題? – sky 2014-10-28 05:11:52

+1

所以這是一個自上而下的射手。那麼'Intersector'類有一些告訴你的方法,如果某些特定的對象重疊。你可以看看它的所有方法,你應該考慮你需要什麼方法。例如'Intersector'有一個'overlapConvexPolygons'方法,它可以測試2個凸多邊形之間的碰撞。但管理本身(何時以及如何調用Intersector方法)以及碰撞響應取決於您。 – Springrbua 2014-10-28 06:30:00