【发布时间】: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,有时却没有。第二个和第四个球发生的最多,但如果比赛时间长,第一个和第三个球也会发生...\