检测精灵之间的碰撞

时间:2015-08-23 15:29:09

标签: java libgdx collision

我的游戏有两个类,它们都会产生精灵,唯一的区别是它们的精灵在不同的方向移动。

public void newSprite(float x,float y){
        Sprite sprite= Pools.obtain(Sprite.class);
        sprite.set(Mysprite);
        sprite.setPosition(x,y);
        arrayList.add(sprite);
    }

if(condition==true){
  newSprite(); //calls the method to spawn a new sprite
}

然而,如何检测来自另一个类的精灵是否与此碰撞,从这两个类中产生了很多精灵。我的想法是通过使用池为每个精灵创建一个矩形。

1 个答案:

答案 0 :(得分:0)

<强>参数

此方法还包含两个精灵

<强>假设

此方法假定两个精灵都包含属性xywidthheight

<强>返回

此方法返回一个布尔值,表示它们是否发生碰撞。

bool detectCollision(Sprite sprite1, Sprite sprite2) {

    return ((sprite1.x <= sprite2.x && (sprite2.x + sprite2.width) - sprite1-x <= sprite1.width + sprite2.width) ||
            (sprite1.x >= sprite2.x && (sprite1.x + sprite1.width) - sprite2.x <= sprite1.width + sprite2.width)) && // Check for x 
        ((sprite1.y <= sprite2.y && (sprite2.y + sprite2.height) - sprite1.y <= sprite1.height + sprite2.height) || 
            (sprite1.y >= sprite2.y (sprite1.y + sprite1.height) - sprite2.y <= sprite1.height + sprite2.height)); // Check for y

}

此方法检查每个矩形的最外侧,并检测距离是否小于组合的两个的宽度或高度。如果两个轴都检查为真,则保证它们正在触摸。

告诉我它是否有效!