当前位置: 首页 > 知识库问答 >
问题:

libgdx中的碰撞检测

子车鸿才
2023-03-14

我的问题主要与它背后的理论有关。我为一个项目制作了一个2D游戏,通过使用Rectangle类中的.overlapps方法检测碰撞,碰撞处理得很好。首先,被认为是连续或离散碰撞技术。当我读到这个理论时,我说它是离散的,但我在网上的文章中读到离散的主要缺点是它在实际发生碰撞后检测到碰撞。所以,我的问题是:它实际上是离散的吗?如果是这样的话,我看不出它有什么缺点吗?谢谢

共有1个答案

狄侯林
2023-03-14

这是谨慎的,因为我们只有在检查假想的/不可见的框是否相交(意味着它们已经重叠)之后才知道两个边界框是否碰撞。因此,当您由于碰撞而采取行动(更新)时,对象不在碰撞位置。更糟糕的情况是,如果他们没有相对速度,他们可以通过。想想经典的直升机游戏,你通过上下移动来躲避障碍物。假设你把x轴上斩波器的速度调得很高,这取决于你的帧率,而帧率又取决于硬件,你会看到实际碰撞的不同位置。对于连续,一个物体必须知道它可能碰撞的其他物体的物理属性,以预测可能的碰撞。

实际上,对于像我提到的直升机游戏这样的2D游戏来说,这真的无关紧要。您可以通过更改对象的旋转,速度,重力以及通过一些漂亮的动画来模拟碰撞的结果。如果您的游戏对象具有抽象形状,则应使用类似 box2d 的内容。还有一个很好的部门间类。

此外,您可以尝试使用对象的不同边界框大小(边界),而不是创建等于其宽度和高度的对象的边界框。

 类似资料:
  • 我花了数小时寻找解决方案:我正在用libgdx开发一个自上而下的小游戏(可能这与我使用的引擎有关)。现在我必须在我的角色(圆形)和墙(矩形)之间实现碰撞检测。如果可以滑动,我希望角色在碰撞时沿着墙滑动。让我解释一下: 如果我向上移动45度,我可能会撞到墙的下面、左边或角落。 如果我与左边相撞,我想停止x运动,只向上移动。如果我离开墙壁,那么我想继续向上移动。与下侧相同(停止y运动) 如果我与角落相

  • 使用< code >加速计,我的精灵图像会左右移动,如果我触摸屏幕,精灵会移动到Y轴。我想在不同的精灵之间进行碰撞检测,这样如果精灵穿过一个物体,它就会停下来藏在那个物体里。我已经看了这个https://www.youtube.com/watch?v=T1aN-vTqLc的教程,但什么也没发生。进行碰撞检测的正确方法是什么?我不知道我的编码有什么问题。任何建议或更好的教程谢谢和进步 这是我的编码

  • 我正在做一个2d平板游戏。到目前为止,我已经做了一些事情。我正在使用libgdx的矩形进行基本的碰撞检测,所以考虑到我现在只有草块,我用Java制作了一个单块世界(文件读取器还没有准备好),问题是我的检测只在第一次工作,换句话说,如果我产生碰撞到一个块,它会检测到碰撞并这样做。虽然如果我在没有碰撞的情况下,让我的球员在方块顶部出现,球员将永远摔倒。 这是代码=

  • 我有一个带有3D模型实例的3D场景;我想做冲突检测。我目前正在遵循本教程(http://blog.xoppa.com/using-the-libgdx-3d-physics-bullet-wrapper-part1/)。然而,我想要的有点复杂。 有一个角色(一个knight.g3db模型,是Libgdx基本3d模型类的示例代码的一部分),它可以用剑攻击。我还有另一个模型实例,我想用剑“攻击”它。

  • 我使用libgdx为一个项目制作了一个2D游戏,我的碰撞检测技术基于。在矩形中重叠方法,效果良好。我想了解其背后的实现,如果我要将其与intersects方法并行,我知道它是如何工作的。但这是唯一的吗?我读到,在离散碰撞检测方法中,不仅需要计算实体是否发生碰撞,还需要计算它们发生碰撞的“程度”(碰撞深度),并使用轴对齐的边界盒算法将实体推回。首先,我对矩形重叠技术是否与libgdx中的AAAB相同

  • 我目前正在尝试使用java和libgdx制作一个突破性的克隆。我现在很难让球以合适的角度从挡块上弹起。简而言之,我遇到的问题是,球每帧移动12个像素,并不总是与砖的边缘对齐。如果有人对更好的移动球的方法或其他检查碰撞的方法有任何建议,我们将不胜感激! 主要游戏类 Ball类 砖块代码以防万一