Java LibGDX中10x10地图正方形尺寸计算错误,屏幕缩放时失效
LibGDX 10x10地图正方形适配问题
问题说明
我正在用Java LibGDX开发一款带10x10地图的游戏,需要计算正方形尺寸以让地图完全适配屏幕。
变量定义
rect_x_end, rect_y_end:正方形的x、y轴尺寸screen_x, screen_y:屏幕尺寸len_map_x, len_map_y:地图宽高,均为10
原计算方式
我最初采用以下逻辑计算正方形尺寸:
rect_x_end = screen_x / len_map_x rect_y_end = screen_y / len_map_y
正常示例
在屏幕尺寸为640x480时,计算结果正常:
64 = 640 / 10 48 = 480 / 10
但调整屏幕尺寸后,该计算方法得出的结果错误。此前我在Python Pygame中实现过类似逻辑,运行完全正常。
附完整代码(kucer0043.java)
package com.kucer0043.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.utils.ScreenUtils; public class kucer0043 extends ApplicationAdapter { private ShapeRenderer shapeRenderer; private int map_size; @Override public void create () { shapeRenderer = new ShapeRenderer(); map_size = 10; // square map size } @Override public void render () { ScreenUtils.clear(0.5f, 0.5f, 0.5f, 1); int rect_x_end = Gdx.graphics.getWidth() / map_size; int rect_y_end = Gdx.graphics.getHeight() / map_size; int map_x = Gdx.input.getX() / rect_x_end; int map_y = Gdx.input.getY() / rect_y_end; int x = map_x * rect_x_end; int y = Gdx.graphics.getHeight() - (map_y + 1) * rect_y_end; shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(0f,1f,0f,0f); shapeRenderer.rect(x,y, rect_x_end, rect_y_end); shapeRenderer.end(); } @Override public void dispose () { } }
内容的提问来源于stack exchange,提问作者user19345539
相关产品推荐
相关产品推荐

