繁体   English   中英

Sprite从屏幕的左下角开始-libgdx

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM