SIMPLE碰撞检测Java

时间:2012-12-13 21:00:10

标签: java collision

我已查看以下链接:

http://www.ehow.com/how_12134402_detect-rectangle-collision-java.html

我在我的播放器和房子周围制作了2个矩形,但我对if语句看起来应该是什么感到困惑,我在x上有一个布尔值,意味着如果我的矩形相交x将返回true,所以我知道我从

if(x=true){
    //what to type in here for my collision?
}

我的2D状态变化游戏需要这种碰撞,我有一个玩家可以在地图上移动键盘和房子,我希望我的玩家不能穿过房子。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用Rectangle2D.Double rect = new Rectangle2D.Double(x,y,w,h))定义您的碰撞盒。

然后检查

rect.contains(x,y);

bool isCollision = rectOne.intersects(rectTwo);

或更完整的例子

// returns true at the first collision
// returns false if no collision with none of the houses
Rectangle2D.Double player = new Rectangle2D.Double(x,y,w,h);
Rectangle2D.Double[] houses = map.getHouseBounds();
boolean isAnyCollision = false;
int i = 0;
while (!isAnyCollision && cnt < houses.length) {
   isAnyCollision = player.intersects(houses[i]);
}
return isAnyCollision;