我有一个玩家设置box2d,我正在尝试在玩家上画一个精灵。玩家在屏幕中间产生,而精灵在屏幕的左下角产生,但确实与玩家实体一起移动,只是从不同的位置开始。
GameScreen片段:
@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);
}
我尝试根据body的坐标在构造函数中设置sprite的位置,但它似乎不起作用。我已经删除了身体和夹具代码。任何正确方向的推动都值得赞赏。
答案 0 :(得分:0)
如果启用box2d调试渲染,您可能会发现纹理和正文都从屏幕的左角开始。实际上,0, 0
应该是左下角的坐标。为了将您的身体设置在屏幕的中心,您应该设置类似
(SCREEN_WIDTH / 2) / PTM_RATIO, (SCREEN_HEIGHT / 2) / PTM_RATIO
作为你的身体初始位置。