因此,我非常兴奋地开始使用 LibGDX 作为 OUYA 和 PC 的第一个 android 标题,但我在使用 LibGDX 时遇到了一些障碍。(我所有的问题都可以通过查看源代码来回答,但我也确实在尝试理解设计选择)。
首先,坐标系。我使用 Project Setup jar 创建了一个项目,它像这样创建了一个 OrthographicCamera
camera = new OrthographicCamera(1, h/w);
根据我的阅读,我了解到 LibGdx 将左下角用于 0,0 和 yUp。美好的。我发现如果我愿意,很容易更改为 y down,但我不理解创建的下一段代码。
对于创建的默认精灵,位置设置如下。
logoSprite.setOrigin(logoSprite.getWidth()/2, logoSprite.getHeight()/2);
logoSprite.setPosition(-logoSprite.getWidth()/2, -logoSprite.getHeight()/2);
当我运行这个基本程序时,我看到我添加的徽标图像位于屏幕中央。我想了解的是为什么设置位置的值是负数,为什么它使用精灵宽度和高度而不是视口的图形 w 和 h?如果我更改屏幕宽度和高度,则图像会绘制在屏幕右下角的某个奇怪位置。
我的下一个问题是 sprite.setSize 与 sprite.setScale。为什么两者之间有区别?(他们似乎做同样的事情,除了 setScale 保持 getWidth 和 getHeight 不变)。
由于我的游戏将大量使用 2D 相机进行平移、缩放和旋转,因此在开始编写任何代码之前,我会尽可能多地了解 libgdx 框架。
附带说明一下,我有游戏开发和数学背景,并且使用 XNA 制作了几款 2D 和 3D 游戏。我发现 LibGdx 有点令人沮丧,因为它并没有像我期望的那样抽象出 OpenGL,而且到目前为止,我一直在试验的 2D 绘图似乎比它应该的更令人困惑!
我还想指出,我计划在我的动画中使用脊椎。这是否应该改变我使用 y-up 或 y-down 的选择?