You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:00:56