【问题标题】:libGDX collision is delayed for some reasonlibGDX 冲突由于某种原因被延迟
【发布时间】:2014-11-06 16:33:57
【问题描述】:

我有一个对象从屏幕的一侧滚动到另一侧,当离开屏幕的边框时,它会移动到起点并重复该过程。现在,每次对象到达屏幕中间时,它都会与一个矩形碰撞并在计数器上添加一个点。

这里是碰撞代码:

if (Intersector.overlaps(ball.getBoundingCircle(), myWorld.getRec())) GameWorld.addScore(1);

问题是,第一次对象与矩形碰撞时,点被添加,第二次不是,第三次是,第四次不是,之后它工作正常。 谁能告诉我第二次和第四次没有添加该点可能是什么问题?

编辑:这是我在下面的评论中提到的所有四个球对象的完整碰撞代码:

if (Intersector.overlaps(ball.getBoundingCircle(), myWorld.getRec())){ GameWorld.addScore(1);System.out.println("ball.");}
if (Intersector.overlaps(ball2.getBoundingCircle(), myWorld.getRec())){ GameWorld.addScore(1);System.out.println("ball2.");}
if (Intersector.overlaps(ball3.getBoundingCircle(), myWorld.getRec())){ GameWorld.addScore(1);System.out.println("ball3.");}
if (Intersector.overlaps(ball4.getBoundingCircle(), myWorld.getRec())){ GameWorld.addScore(1);System.out.println("ball4.");}

【问题讨论】:

  • 使用您输入的代码,我唯一能想到的就是尝试使用 log if 在 1 内查看它是否在您认为时发生冲突,如果是,请查看 addScore 的代码跨度>
  • 好的,我需要更精确。我使用在屏幕上运行的球对象的变量,当每次击中矩形时,它会添加一个点,当每个离开屏幕边框时,它会移动到其起始位置。当我用日志运行代码时,第二个和第四个对象没有在第一轮和第二轮传递的对象(球)上加点,但是从第三轮开始他们开始加点并且日志显示正确.第一轮和第二轮都是问题……
  • 我想,你粘贴代码 GameWorld.addScore()
  • 我刚刚为所有四个球添加了完整的碰撞代码。我用日志再次检查了代码,看起来有时球在碰撞后加 1,有时却没有。第二个和第四个球发生的最多,但如果比赛时间长,第一个和第三个球也会发生...\

标签: java android libgdx


【解决方案1】:

通过增加矩形的宽度和圆的半径来解决它。

【讨论】:

    猜你喜欢
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多