碰撞检测Libgdx矩形

时间:2014-11-25 08:08:08

标签: java eclipse libgdx game-physics

我正在尝试使用矩形为我的游戏实现碰撞检测,但似乎无法让它发挥作用。

每个帧按空格时都会更新项目符号,以便它们在屏幕上移动。显然我在这里被告知,碰撞箱也随之移动。我通过使用sprite.getBoundingBox()得到这个,它为每个实例设置一个数据字段Rectangle为此值。

我有两个Arraylists,一个持有Monsters实例,一个持有子弹实例。它们都有与之关联的collisionRectangles。

只要子弹或怪物arraylist中存在某些东西,我就会从每个帧的主渲染循环中调用checkCollisions()方法。

/*this handles collisions between bullets and enemies*/
public static void checkCollisions(){
    for (int i = 0; i < Main.currentBullets.size(); i++){
        for (int k = 0; k < Main.currentMonsters.size(); k++){
            if (Intersector.overlaps(Main.currentBullets.get(i).collisionBoxBullet,
                  Main.currentMonsters.get(k).collisionBoxMonster)){
                     System.out.println("Boom headshot");
                }
        }
    }

每次重叠时,这不应该是Boom Headshot吗?相反,似乎总是评估为真。

为什么它会继续评估为真,并写出热潮爆头?

1 个答案:

答案 0 :(得分:0)

我没做的是设置精灵矩形的位置为0.0。然后我也没有使用collisionBox.setPosition()正确移动碰撞盒。

它最初检查0/0处的精灵是否与0.0处的碰撞盒碰撞,这总是正确的,因此总是说它重叠。