在我的安卓游戏中,只要我的数组中只有一个矩形,碰撞就会起作用,所以它适用于此:
rects = new Rectangle[1];
for(int i = 0; i < rects.length; ++i)
rects[i] = new Rectangle(i * 150, 0, 150, 150);
但不是如果我添加另一个矩形rects = new Rectangle[2];
我的碰撞代码如下所示:
public boolean collision(Rectangle rect){
return (Intersector.overlaps(playerBound, rect));
}
我这样用它:
for(int i = 0; i < rects.length; ++i){
if(!collision(rects[i]))
player.setY(player.getY() - 1f);
}
playerBound初始化如下:playerBound = new Rectangle(player.getX(), player.getY(), player.getWidth(), player.getHeight() + 1);
有什么问题?我不明白如果数组中只有一个矩形,它是如何工作的,但如果还有更多则不能。
答案 0 :(得分:1)
嗯,这是因为此代码段中存在逻辑错误:
for(int i = 0; i < rects.length; ++i){
if(!collision(rects[i]))
player.setY(player.getY() - 1f);
}
您检查多个矩形是否有碰撞。我们假设数组中的第一个将导致碰撞。好的,Y不会改变。现在还有另一个矩形。第二个矩阵将不导致碰撞。现在发生了什么?即使发生碰撞,您也可以更改玩家的Y值。
将其更改为:
boolean collision = false;
for(int i = 0; i < rects.length; ++i){
if(collision(rects[i]))
collision = true;
}
if (collision == false)
player.setY(player.getY() - 1f);