java - 为什么示例作者对正交相机的宽度和高度进行硬编码?(LibGdx Zombie Bird 教程)

标签 java android android-layout libgdx orthographic

我正在尝试按照此处的指南学习 LibGdx。

http://www.kilobolt.com/day-4-gameworld-and-gamerenderer-and-the-orthographic-camera.html

这是作者设置正交相机宽度和高度的代码(相机用于将 3d 内容均匀地投影到 2d 中?

    private OrthographicCamera cam;
    and later in a constructor 
    cam = new OrthographicCamera();
    cam.setToOrtho(true, 136, 204);

他选择硬编码宽度和高度而不是通过 Gdx.graphics.getWidth/getHeight 检索游戏正在运行的屏幕的高度和宽度是否有原因? (-来自 Changing the Coordinate System in LibGDX (Java) )

最佳答案

您不了解相机的工作原理。对于相机来说,屏幕是 320x480 还是 1080*1920 并不重要。相机使用自己的坐标系。例如我们有1920*1080的屏幕。我们不想使用像素,因为这是不好的做法。我们真正想要的是拥有自己的世界坐标系。如果你有 16*9 m 的世界,那么你可以计算出 1 m = 120 像素。但你的 friend 可以拥有 800*450 的屏幕,对他来说 1 m = 50 像素。这就是为什么我们对相机的宽度和高度进行硬编码。但这里还有一个问题,就是比例。我们认为我们的比率是 16/9,但有些设备可以有 4/3 的比率。支持很多比率是非常复杂的主题,所以我不想在这里提及。

我的游戏不同比例的截图

如果您愿意,我可以与您分享我的代码。但请注意,它并不完美,也不是完整的游戏。正如您从屏幕截图中看到的,我没有硬编码高度,只有宽度。所以我上下都有空的空间。

关于java - 为什么示例作者对正交相机的宽度和高度进行硬编码?(LibGdx Zombie Bird 教程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27448512/

相关文章:

java - "BufferedReader.ready"与 "while(BufferedReader.readLine()!=null)"

java - Wildfly Swarm RESTeasy 隐藏 webapp/index.html

java - Intellij - 相同的 jar 到多个位置

android - 如何知道某个进程是否在 Android 设备中运行?

android - React Native Android 按钮阴影

android - 通过 intent extras 在 Activity 之间传递的关键数据的安全性

android - 如何在 ScrollView 中将 LinearLayout 高度设置为匹配父级

android - Android 中带有 layout_weight 的线性布局中的无边框按钮

java - LinearLayout 无法转换为 android.widget.ImageView?

java - java中的服务器端验证