我正在尝试将图像(playBtn)放在屏幕的中央,使用下面的代码,我的结果更靠近右上角。请看下面的代码
public class FlappyBird extends ApplicationAdapter {
Texture img;
public static final int WIDTH = 1440;
public static final int HEIGHT = 2560;
}
上面,我设置了我的WIDTH&我认为高度不是正确的方法。尽管如此,这给了我所需的价值,但我似乎无法使用playbth并将其置于中心
public class MenuState extends State {
private Texture background;
private Texture playBtn;
public MenuState(GameStateManager gsm) {
super(gsm);
background = new Texture("bg.png");
playBtn = new Texture("playbtn.png");
}
@Override
public void render(SpriteBatch sb) {
sb.begin();
sb.draw(background, 0, 0, FlappyBird.WIDTH, FlappyBird.HEIGHT);
//sb.draw(playBtn, (FlappyBird.WIDTH / 2) - (playBtn.getWidth() / 2), FlappyBird.HEIGHT / 2);
sb.draw(playBtn,(FlappyBird.WIDTH/2)-(playBtn.getWidth()),FlappyBird.HEIGHT / 2);
sb.end();
}
}
答案 0 :(得分:0)
实际上所有物体都是从它们的左角之一定位的。因此,虽然图像本身看起来是未对齐的,但它实际上是图像的左上角或左下角,这取决于编程语言如何与Y轴一起工作。
我将几张快速图表拼凑在一起,以获得更好的视觉表现。 对于此示例,Y轴向下增加,因此点(0,0)将是窗口的左上角而不是左下角。
假设您有一个200像素宽,100像素高的窗口,并且您有一个20像素×20像素的对象,您想要放置在窗口的正中心。一般的假设是将对象放置在窗口宽度和高度的一半处,但这样做会得到类似于此的结果:
但是,这是一个非常简单的问题。只需将对象从窗口宽度的一半定位,减去X轴对象宽度的一半,窗口高度的一半减去Y轴对象高度的一半:
如前所述,一些编程语言在Y轴向上增加和向下减小的地方有所不同。如果是这种情况,那么你必须考虑对象的左下角而不是左上角,但我相信方程应该是相同的。