Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在libgdx中检测两个精灵之间的碰撞?_Java_Android_Libgdx_Box2d - Fatal编程技术网

Java 如何在libgdx中检测两个精灵之间的碰撞?

Java 如何在libgdx中检测两个精灵之间的碰撞?,java,android,libgdx,box2d,Java,Android,Libgdx,Box2d,我正在学习libgdx。我想用libgdx创建一个2d fps游戏,它基本上没有物理环境。在这种情况下,会发生大量碰撞(例如,大量子弹击中多个对象)。我需要检查每个精灵的矩形与其他精灵的相交。这样一来,可能会有上千个雪碧,每次都用其他999个雪碧检查每个雪碧绝对不是一个好主意 libgdx的scene2d已经命中了检测api,这能解决我的问题吗? 或 我应该使用box2d碰撞检测? 或 在libgdx中还有其他方法检测冲突吗 我想创建一个2d fps游戏 据我所知,FPS的意思是“第一人称射

我正在学习libgdx。我想用libgdx创建一个2d fps游戏,它基本上没有物理环境。在这种情况下,会发生大量碰撞(例如,大量子弹击中多个对象)。我需要检查每个精灵的矩形与其他精灵的相交。这样一来,可能会有上千个雪碧,每次都用其他999个雪碧检查每个雪碧绝对不是一个好主意

  • libgdx的scene2d已经命中了检测api,这能解决我的问题吗? 或
  • 我应该使用box2d碰撞检测? 或
  • 在libgdx中还有其他方法检测冲突吗
我想创建一个2d fps游戏

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

现在谈谈碰撞检测问题:

  • Scene2D
    s点击检测用于触摸或触摸等输入 鼠标事件。因此,它用于检测,如果触摸到
    参与者
    , 点击
  • Box2D
    是一个2D物理引擎,它不仅可以进行碰撞 检测,但它也可以做碰撞响应 就像物理模拟一样(重力之类的)
  • Libgdx提供了可用于
    重叠
    测试。冲突的组织/管理 检测由你决定
  • 如果您能告诉我们您的游戏应该如何运行,您的世界应该如何管理等,那就更好了。
    例如,如果您的世界是平铺的,则墙和播放器之间的碰撞检测可以是一个简单的检查,如果平铺被占用->碰撞,如果没有->无碰撞。
    此外,了解对象的形状也很重要。矩形-矩形碰撞检测不同于矩形-圆形碰撞检测。
    现在有3种解决方案:
    -使用
    Box2D
    并阅读有关如何使用它的教程
    -对碰撞检测进行一些研究,阅读教程并查看一些示例项目

    -给我们更多关于游戏、游戏对象、游戏形状等的信息。

    明白了。。首先,我的游戏不是基于瓷砖的。我不知道第一人称射击游戏是mean的3d,但我的游戏就像只在顶视图下玩《使命召唤》。所以它是2d的,不需要添加物理,会有很多敌人的,车辆,子弹,掩体等。。正如你提到的Intersector类和一些碰撞检测算法解决了我的问题?所以它是一个自上而下的射手。好的,
    Intersector
    类有一些方法可以告诉您,如果某些特定对象重叠。你可以看看它的所有方法,你应该考虑你需要什么方法。例如,
    Intersector
    有一个方法
    overlappliconxpolygons
    ,可以测试两个凸多边形之间的碰撞。但是管理本身(何时以及如何调用
    Intersector
    方法)以及冲突响应取决于您。