如何将精灵的坐标附加到它的中心? 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;
}
}
我希望当我将精灵设置到某个坐标时,它会通过其中心设置到这些坐标。
您可以使用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;
}
}