Как мне прикрепить координаты спрайта к его центру? LibGDX - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу, чтобы, когда я устанавливал спрайт на определенные координаты, он устанавливался на эти координаты по центру.

For clarity I drew the picture

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать Sprite.setCenter(x,y)

Устанавливает положение так, чтобы спрайт центрировался (x, y)

Нет Sprite.getCenterX() или Sprite.getCenterY() tho. Если вам это нужно, вы можете создать класс, который расширяет Sprite и реализовать его самостоятельно ...

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;
    }
}
...