Java LibGDX:碰撞仅适用于一个矩形
在我的android游戏中,只要我的数组中只有一个矩形,冲突就会起作用,因此它适用于以下情况:Java LibGDX:碰撞仅适用于一个矩形,java,android,libgdx,collision-detection,Java,Android,Libgdx,Collision Detection,在我的android游戏中,只要我的数组中只有一个矩形,冲突就会起作用,因此它适用于以下情况: rects = new Rectangle[1]; for(int i = 0; i < rects.length; ++i) rects[i] = new Rectangle(i * 150, 0, 150, 150); 我是这样用的: public boolean collision(Rectangle rect){ return (Intersector.overlaps(pla
rects = new Rectangle[1];
for(int i = 0; i < rects.length; ++i)
rects[i] = new Rectangle(i * 150, 0, 150, 150);
我是这样用的:
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);
}
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);
for(int i=0;i
playerBound的初始化如下:playerBound=new矩形(player.getX(),player.getY(),player.getWidth(),player.getHeight()+1)代码>
有什么问题?我不明白如果数组中只有一个矩形,但如果有更多矩形,它如何工作。这是因为这里的代码片段中有一个逻辑错误:
for(int i = 0; i < rects.length; ++i){
if(!collision(rects[i]))
player.setY(player.getY() - 1f);
}
for(int i=0;i
检查多个矩形是否存在冲突。让我们假设数组中的第一个将引起冲突。好的,Y不会改变。现在有另一个矩形。第二个rect将不导致碰撞。现在发生了什么?即使发生碰撞,也可以更改播放器的Y值
将其更改为以下内容:
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);
}
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);
布尔冲突=false;
对于(int i=0;i
如果确定第二个新矩形位于大括号之间,请始终使用大括号在循环或if语句中包含功能。