如何将精灵的坐标附加到它的中心? LibGDX

How do I attach the coordinates of a sprite to its center? LibGDX

我希望当我将精灵设置到某个坐标时,它会通过其中心设置到这些坐标。

您可以使用Sprite.setCenter(x,y)

Sets the position so that the sprite is centered on (x, y)

不过没有 Sprite.getCenterX()Sprite.getCenterY()。如果你需要这个,你可以创建一个扩展 Sprite 的 class 并自己实现它...

public class MySprite extends Sprite {
    public MySprite(Texture texture) {
        super(texture);
    }

    public float getCenterX(){
        return getX()+getWidth()/2;
    }

    public float getCenterY(){
        return getY()+getHeight()/2;
    }
}

现在使用 MySprite

您还可以覆盖所有与位置相关的方法

public class MySprite extends Sprite {
    public MySprite(Texture texture) {
        super(texture);
    }

    @Override
    public void setX(float x) {
        super.setX(x-getWidth()/2);
    }

    @Override
    public void setY(float y) {
        super.setY(y-getHeight()/2);
    }

    @Override
    public void setPosition(float x, float y) {
        super.setPosition(x-getWidth()/2, y-getHeight()/2);
    }

    @Override
    public float getX() {
        return super.getX()+getWidth()/2;
    }

    @Override
    public float getY() {
        return super.getY()+getHeight()/2;
    }
}