【问题标题】:Collision Detection in libgdxlibgdx 中的碰撞检测
【发布时间】:2013-07-16 15:58:36
【问题描述】:

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

【问题讨论】:

  • 它是离散的,因为您以时间步长更新位置,它发生得如此之快以至于人眼无法看到它,如果您降低 fps,您会注意到运动实际上是多么不连续。除非你能真正看到或注意到这一点,否则担心它是没有意义的。连续碰撞检测使用预测(插值)在物体发生碰撞之前将其转开。

标签: java libgdx collision


【解决方案1】:

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

实际上,对于像我提到的直升机游戏这样的 2D 游戏,这真的无关紧要。您可以通过更改对象的旋转、速度、重力和一些漂亮的动画来模拟碰撞结果。如果你的游戏对象有抽象的形状,你应该使用 box2d 之类的东西。还有一个很好的Intersector 课程。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多