0

我有一个带有 box2d 的播放器设置,我正在尝试在播放器上绘制一个精灵。玩家生成在屏幕中间,而精灵生成在屏幕的左下角,但会随着玩家实体移动,只是从不同的位置开始。

游戏画面片段:

@Override
public void render(float delta) {
    super.render(delta);
    player.update();
    world.step(TIMESTEP, VELOCITY_ITERATIONS, POSITION_ITERATIONS); 
}

@Override
public void show() {
    player = new Player(world, 0, 0);
}

播放器类片段:

public Player(World world, float x, float y) {
    texture = new Texture(Gdx.files.internal("sprites/Player.png"));
    sprite = new Sprite(texture);
}

public void update() {
    batch = new SpriteBatch();
    batch.begin();
    sprite.draw();
    sprite.setPosition(body.getPosition().x, body.getPosition().y);
    batch.end();
    body.setLinearVelocity(impulse);
}

我尝试根据身体的坐标在构造函数中设置精灵的位置,但它似乎不起作用。我已经删除了身体和夹具代码。任何朝着正确方向的推动都值得赞赏。

4

1 回答 1

0

如果启用 box2d 调试渲染,您可能会发现纹理和主体都从屏幕的左角开始。实际上,0, 0应该是左下角的坐标。为了将你的身体设置在屏幕的中心,你应该设置类似

(SCREEN_WIDTH / 2) / PTM_RATIO, (SCREEN_HEIGHT / 2) / PTM_RATIO

作为你身体的初始位置。

于 2013-11-04T01:22:10.500 回答