Libgdx x和y的区别

时间:2016-01-21 18:36:38

标签: java libgdx

在下面的图片中你可以看到我在屏幕上画了一个黑色圆圈,在代码中我试图让黑色圆圈与清晰圆圈的坐标相匹配,这是我物理身体的完全正常工作。

我的问题是当我在地图上移动清晰的圆圈时,黑色圆圈停留在角落里。黑色的圆圈移动了几个像素,所以看起来它有点像一些但是非常缩小,我不知道为什么。感谢。

xydifference

 public void update(float dt){
        handleInput(dt);

        world.step(1 / 60f, 6, 2);

        player.update(dt);

        camX();

        gameCam.update();
        renderer.setView(gameCam);
    }

    @Override
    public void render(float delta) {
        update(delta);
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
        hud.stage.draw();

        renderer.render();

        b2dr.render(world, gameCam.combined);

        game.batch.begin();
        game.batch.draw(ball,player.getX() , player.getY(), 70, 70);
        game.batch.end();

    }

    public void camX(){
        gameCam.position.x = gamePort.getWorldWidth() / 2;
        if(player.b2Body.getPosition().x  >= gamePort.getWorldWidth() / 2){
            gameCam.position.x  = player.b2Body.getPosition().x;
        }
    }
public class Character extends Sprite {
    public World world;
    public Body b2Body;
    public float x;
    public float y;

    public Character(World world){
        this.world = world;
        defineMario();
    }

    public void update(float dt) {
      setPosition(b2Body.getPosition().x,b2Body.getPosition().y );
    }

2 个答案:

答案 0 :(得分:1)

您可以将批处理的投影矩阵设置为用户界面绘制的UI相机,但在绘制游戏元素之前,您永远不会将其更改为gameCamera的投影。在game.batch.begin();行之前,您需要添加game.batch.setProjectionMatrix(gameCamera.combined);

顺便说一句,角色延伸精灵没有意义,因为你不会使用角色来绘制任何东西,只能用于追踪位置。

答案 1 :(得分:0)

请试试这个:

    public class Character extends Sprite {
        public World world;
        public Body b2Body;
        public float x;
        public float y;

        public Character(World world){
            this.world = world;
            defineMario();
        }

        public void update(float dt) {
         //so the sprite and body will have the same center
         setPosition(b2Body.getPosition().x-getWidth()/2, b2Body.getPosition().y- getHeight()/2 );

          setCenterOrigin(); // to handle when body does a rotation
        }

请在评论中告诉我它是否有效

祝你好运