[英]Sprite starts in lower left corner of screen - libgdx
我使用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);
}
我尝试根据主体的坐标在构造函数中设置子画面的位置,但似乎不起作用。 我已删除车身和灯具代码。 朝正确方向的任何推动都值得赞赏。
如果启用box2d调试渲染,则可能会发现纹理和主体都从屏幕的左上角开始。 实际上, 0, 0
应该是左下角的坐标。 为了将您的身体设置在屏幕中央,您应该设置以下内容
(SCREEN_WIDTH / 2) / PTM_RATIO, (SCREEN_HEIGHT / 2) / PTM_RATIO
作为您身体的初始位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.