如何检测libgdx中两个sprite之间的冲突?

时间:2014-10-27 14:20:23

标签: java android libgdx box2d

我正在学习libgdx。我想用libgdx创建一个2d fps游戏,基本上没有物理环境。在那种情况下,会有很多碰撞(例如,很多子弹击中多个物体)。我需要检查每个精灵矩形与其他精灵的交叉。通过这种方式,可能有数千个精灵,每次用其他999个精灵检查每个精灵并不是一个好主意。

  • libgdx有一个遇到检测api的scene2d,是解决了我的问题吗? 或
  • 我应该使用box2d碰撞检测? 或
  • 还有其他方法来检测libgdx中的冲突吗?

1 个答案:

答案 0 :(得分:3)

  

我想创建一个2d fps游戏

据我所知,FPS的意思是“第一人称射击游戏” - >第一人称视角的射手。这意味着,它是3D 所以请求澄清你的意思。

现在来看碰撞检测问题:

  1. Scene2D点击检测用于触摸或输入 mouseevents。因此,如果触摸Actor,则用于检测 点击...
  2. Box2D是一个2D物理引擎,它不仅可以进行碰撞 检测,但它也可以做碰撞响应 作为物理模拟(重力和类似的东西)。
  3. Libgdx提供Intersector课程,您可以将其用于 overlap测试。组织/碰撞的管理 检测取决于你。
  4. 如果你告诉我们你的游戏应该如何运作,你的世界应该如何管理等等,那会更好 例如,如果您的世界是基于图标的,则墙和玩家之间的碰撞检测可以是简单的检查,如果图块被占用 - >碰撞,如果不是 - >没有碰撞。
    了解对象的形状也很重要。矩形 - 矩形碰撞检测不同于矩形圆碰撞检测 所以现在有3个解决方案可以解决你的问题:
    - 使用Box2D并阅读有关如何使用它的教程
    - 做一些关于碰撞检测的研究,阅读教程并看看一些示例项目 - 向我们提供有关游戏,物体,形状等的更多信息。