Libgdx Entity Gravity

时间:2014-08-04 04:38:53

标签: java libgdx

我真的不喜欢将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循环遍历所有矩形以检查玩家是否触摸顶部。

2 个答案:

答案 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