如何使相机的速度与播放器相同

时间:2014-12-05 16:32:18

标签: java libgdx box2d

我用Box2d在LibGDX上做了一个无尽的跑步者。我想让相机和播放器以相同的速度移动,所以当一切都很好时,播放器就在屏幕的中央。我不希望它总是让玩家成为中心,因为如果玩家卡住(例如在箱子后面),我希望玩家被相机留下。有了这个,我以为我可以使用与玩家相同的默认速度翻译相机。虽然不起作用。帮助

render()(使用相机更新):

dx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //stage.getCamera().translate(Constants.DEFAULT_VELOCITY / Constants.PIXELS_TO_BOX, 0, 0);
    //the commented function call above was what I was thinking; doesnt work
    stage.getCamera().position.x = player.getX();
    batcher.begin();
    batcher.draw(AssetLoader.background, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    batcher.end();

    stage.draw();

    batcher.begin();
    debugRenderer.render(gameWorld.getWorld(), debugMatrix);
    batcher.end();

玩家的一部分:

public Player(Texture texture, float x, float y, World world) {
    this.texture = texture;
    setWidth(texture.getWidth()); //pixels
    setHeight(texture.getHeight()); //pixels
    setPosition((x + getWidth()/2), y + (getHeight()/2)); //pixels
    setName("player");

    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.DynamicBody;
    bodyDef.position.set(x / Constants.PIXELS_TO_BOX, y / Constants.PIXELS_TO_BOX); //meters

    body = world.createBody(bodyDef);
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(texture.getWidth()/2 / Constants.PIXELS_TO_BOX , texture.getHeight()/2 / Constants.PIXELS_TO_BOX); //meters

    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = shape;
    fixtureDef.density = 1.0f;
    fixtureDef.friction = 0.0f;
    fixtureDef.restitution = 0.0f;

    body.createFixture(fixtureDef);
    body.setFixedRotation(true);
    shape.dispose();    

    body.setUserData(this);
}

@Override
public void act(float delta) {
    body.setLinearVelocity(new Vector2(Constants.DEFAULT_VELOCITY, body.getLinearVelocity().y));
    //what I use to set velocity
    if (hasJumped) {
        jump();
        hasJumped = false;
        Gdx.app.log("player", "jumped");
    }
}

0 个答案:

没有答案