gpt4 book ai didi

java - libGDX 将我的系统从像素更改为单位

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:31 28 4
gpt4 key购买 nike

我希望无论屏幕大小和宽高比如何,每个人都能在屏幕上看到相同的内容,所以这就是我目前使用的代码。 (我还发送网络数据以及屏幕上其他玩家所在位置的坐标)

int width = 1920, height = 1080;
public OrthographicCamera camera;
Viewport viewport;
//constructor
camera = new OrthographicCamera();
viewport = new ScalingViewport(Scaling.stretch, width, height, camera);
viewport.apply();
camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0);
camera.update();

public void resize(int width, int height) {
viewport.update(width, height);
camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0);
}

例如,现在我想要 10 个完美的正方形穿过屏幕中间,所以我制作了 192 x 192 像素,这样我就可以有 10 个完美的正方形穿过屏幕中间我的系统现在运行完美,除了事实上,它在所有大小的设备上都以 1920x1080 的分辨率内部呈现。我如何将我的相机转换为单位并获得 10 个完美正方形穿过屏幕所需的尺寸?这可能吗?

这是我在屏幕上绘制 10 个正方形的代码

    float size = 192;
for(int i = 0; i<10; i++){
walls.add(new Stuff(i*size,height/2-size/2,size,size,"middle",1,1,0,1));
}

我如何将所有这些代码转换为 say 单位?或者这是一种可接受的方法?

最佳答案

您已经在使用单位,它们只是意义不大(当然也不是像素)。如果您想使用有意义的单位(例如 SI 单位),那么在此代码中唯一需要更改的就是值。例如。如果你的东西(墙?)的大小是 2 米,那么使用值 2 而不是 192。如果你希望你的用户屏幕是 20 米(例如 10 面墙)宽度和 16:9 纵横比ratio,然后将其用于 Viewport worldWidth 和 worldHeight。

float worldWidth = 20;
float worldHeight = worldWidth * 9f / 16f;
...
viewport = new StretchViewport(worldWidth, worldHeight, camera);

请务必了解您所说的这些“像素”只存在于您的想象中。另请参阅:http://blog.xoppa.com/pixels/ .

关于java - libGDX 将我的系统从像素更改为单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414733/

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