我真的不喜欢将box2d与Libgdx一起使用,所以我从Tiled设置了一个地图,为图层中的每个单元格设置一个矩形。我有一个玩家设置,如果它没有触及其中一个矩形,它应该下降,但它会缓慢地落在地图上。
for(int i = 0; i < g.getBounds().size; i++) {
Intersector.intersectRectangles(bounds, g.getBounds().get(i), intersection);
if((bounds.overlaps(g.getBounds().get(i))) && intersection.y > g.getBounds().get(i).y) {
vel.y = 0;
if (MyInput.isPressed(MyInput.SPACE)) {
vel.y = 5;
}
} else {
vel.y-=.0005f;
}
}
for循环遍历所有矩形以检查玩家是否触摸顶部。
答案 0 :(得分:1)
看起来你正在遍历所有的矩形(?),并且vel.y值被后来的矩形状态覆盖。
例如,您可以使用布尔值来表示您在曲面上并在循环后设置vel.y。答案 1 :(得分:0)
boolean collides=false;
for(int i = 0; i < g.getBounds().size; i++) {
Intersector.intersectRectangles(bounds, g.getBounds().get(i), intersection);
if((bounds.overlaps(g.getBounds().get(i))) && intersection.y > g.getBounds().get(i).y) {
collides=true;
}
}
if(collides){
vel.y = 0;
if (MyInput.isPressed(MyInput.SPACE)) {
vel.y = 5;
}
}else{
vel.y-=.0005f;
}
您的代码错误的解释是在user789805 awnser
上