gpt4 book ai didi

java - LibGDX 文本不在较小视口(viewport)中居中

转载 作者:行者123 更新时间:2023-12-01 13:18:50 25 4
gpt4 key购买 nike

我正在开发一个使用较小视口(viewport)的 LibGDX 游戏。

public static float BOX_SCALE = 10;
public static final float VIRTUAL_WIDTH = (int) (320 / BOX_SCALE);
public static final float VIRTUAL_HEIGHT = (int) (480 / BOX_SCALE);

float viewportHeight = MyConstants.Screen.VIRTUAL_HEIGHT;
float viewportWidth = MyConstants.Screen.VIRTUAL_HEIGHT * Gdx.graphics.getWidth() / Gdx.graphics.getHeight();


例如,我的视口(viewport)可以具有大小 (32, 48)。我使用 Scene2D 进行渲染。由于某种原因,每当我创建 TextButton 时,文本永远不会居中。这是用于按钮的 BitmapFont。

FreeTypeFontParameter fontParam = new FreeTypeFontParameter();
fontParam.size = 14;

FreeTypeFontGenerator generator2 = new FreeTypeFontGenerator(Gdx.files.internal("data/font.ttf"));
labelFont = generator2.generateFont(fontParam);
labelFont.setScale(1f / BOX_SCALE);
labelFont.setColor(Color.BLACK);

enter image description here


如果我将 BOX_SCALE 值设置为 1,则 TextButton 会正常工作,但我需要模拟 Box2D 世界。我想我可以为每个按钮创建单独的标签并手动放置它们,但我不明白为什么会发生这种情况。如果有更清洁的解决方案也很感兴趣。

最佳答案

默认情况下,字体位置四舍五入到最接近的世界游戏单位。这是基于您的字体将呈现像素完美的假设。就您而言,您不需要像素完美的字体,因此请调用:

labelFont.setUseIntegerPositions(false);

此外,在您的 fontParam 中,您应该将其设置为使用 mipmap,并将 minFilter 设置为 MipmapLinearNearest,将 magFilter 设置为 Linear。这会让它看起来更好,因为默认情况下过滤设置为“最近/最近”,如果您不渲染像素完美,这看起来很糟糕。

关于java - LibGDX 文本不在较小视口(viewport)中居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22222972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com