Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx x和y差_Java_Libgdx - Fatal编程技术网

Java Libgdx x和y差

Java Libgdx x和y差,java,libgdx,Java,Libgdx,在下面的图片中,你可以看到我在屏幕上画了一个黑色的圆圈,在代码中,我试图让黑色圆圈与清晰圆圈的坐标相匹配,清晰圆圈是我的物理身体,它完全工作 我的问题是,当我在地图上移动清晰的圆圈时,黑色的圆圈就停留在角落里。黑圈移动了一些像素,所以它的MMOVE看起来有点移动,但是非常小,我不知道为什么。谢谢 请试试这个: public class Character extends Sprite { public World world; public Body

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

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


请试试这个:

    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
        }
请在评论中告诉我它是否有效


祝您好运

您将批处理的投影矩阵设置为用于绘制UI的UI摄影机,但在绘制游戏元素之前,您从未将其更改为
游戏摄影机
的投影。在
game.batch.begin()之前需要添加的行
game.batch.setProjectionMatrix(gameCamera.combined)


顺便说一句,Character扩展Sprite是没有意义的,因为您不使用Character来绘制任何东西,只用于跟踪位置。

它仍然这样做。黑圈会移动,但会缩小,所以我认为这可能与此有关。仅供参考,这里有一个游戏开发人员堆栈交换站点:--您可能会在那里得到更好的响应。
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 );
    }
    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
        }