2014-10-27 120 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