我正在使用Java2D构建游戏,并且我希望该游戏能够将游戏窗口屏幕调整为不同的大小。 该游戏的世界地图大于实际屏幕,因此我还从Java2D库中添加了翻译方法。 一切正常,但是当我在屏幕上添加某些内容(例如绘制矩形)时,会将其添加到其他位置,但是宽度和高度正确,只有对象位置错误,并且在播放器移动时会发生变化,其工作原理正确地使用基本分辨率(1280x720),但是当我调整屏幕大小时,出现了我提到的问题。 有什么建议吗?
这是我的代码:
private void render() {
Toolkit.getDefaultToolkit().sync();
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
Graphics2D g = (Graphics2D)bs.getDrawGraphics();
g.setBackground(Color.white);
g.translate(-Camera.getxPosition(),-Camera.getyPosition());
scaleScreen(g);
ObjectHandler.render(g);
g.translate(Camera.getxPosition(),Camera.getyPosition());
g.setColor(Color.gray);
g.fillRect(100,100,100,100);
g.dispose();
bs.show();
}
private void scaleScreen(Graphics2D g){
int standardWidth = 1280;
int standardHeight = 720;
int screenWidth = 1920, screenHeight = 1080;
g.scale(1.0 * screenWidth / standardWidth, 1.0 * screenHeight / standardHeight);
}
我在这里只添加了我的render方法和scale方法,因为其他代码无关。