所以我非常激动地开始使用LibGDX作为OUYA和PC的第一个android标题,但是我遇到了一些与LibGDX有关的问题。 (我的所有问题都可以通过查看源代码来回答,但我真的很想了解设计选择)。了解LibGDX坐标系和绘图精灵
首先,坐标系。我创建使用项目设置罐子项目,并创建像这样
camera = new OrthographicCamera(1, h/w);
的OrthographicCamera从我读书,我明白LibGdx使用左下角为0,0和烨。精细。 我发现,如果我想要更改为y,但是我不理解创建的下一代代码。
对于创建的默认精灵来说,位置是这样设置的。
logoSprite.setOrigin(logoSprite.getWidth()/2, logoSprite.getHeight()/2);
logoSprite.setPosition(-logoSprite.getWidth()/2, -logoSprite.getHeight()/2);
当我运行这个基本程序时,我看到我添加的logo图像集中在屏幕上。我想了解的是为什么这些值在设置位置是负值,为什么它使用精灵宽度和高度而不是视图端口的图形w和h?如果我更改为屏幕宽度和高度,则图像会在屏幕右下角的某个奇怪位置绘制。
我的下一个问题是sprite.setSize vs sprite.setScale。为什么两者的区别? (他们似乎做同样的事情,除了setScale叶getWidth和getHeight不变)。
由于我的游戏将大量使用2D相机进行平移,缩放和旋转,因此我在开始编写任何代码之前尽可能多地了解libgdx框架。作为一个方面说明,我有一个游戏开发和数学背景,我已经使用XNA制作了几个2D和3D游戏。我发现LibGdx有点令人沮丧,因为它没有像我期待的那样抽象掉OpenGL,到目前为止,我一直在试验的2D绘图似乎比它应该更混乱!
我也想指出,我打算为我的动画使用脊柱。这应该改变我的选择使用y-up还是y-down?
感谢您的回复。我期待通过将原点设置为纹理的中心来绘制图像。这就是它在XNA中的工作方式,但看起来像LibGDX总是从左下角绘制,而不管原点如何。另一件事是相机在0,0,所以屏幕的中心是0,0。示例代码不会为您添加camera.update调用,所以我没有应用对缩放位置的更改。 我在脊柱上的问题直接关系到切换摄像机到y-down。有没有像翻转区域一样翻转脊椎动画的方法? – jjhavokk
是的,你可以翻转动画,在libgdx中,如果我们想要翻转一个动画,我们只是把它放在一个sprite中,然后翻转这个sprite就像这样image.flip(true,false); –