当前位置: 首页 > 知识库问答 >
问题:

了解LibGDX坐标系和绘制sprite

陆英毅
2023-03-14
camera = new OrthographicCamera(1, h/w);

从我的阅读中,我了解到LibGdx使用左下角表示0、0和yup。好吧。我看到,如果我愿意,很容易将其改为y,但我不明白接下来创建的代码。

对于创建的默认精灵,位置设置如下。

logoSprite.setOrigin(logoSprite.getWidth()/2, logoSprite.getHeight()/2);
logoSprite.setPosition(-logoSprite.getWidth()/2, -logoSprite.getHeight()/2);

当我运行这个基本程序时,我看到我添加的标志图像在屏幕上居中。我想要理解的是,为什么设置位置的值是负值,为什么使用sprite width和height而不是视图端口的w、h?如果我更改为屏幕宽度和高度,那么图像将绘制在屏幕右下角的某个奇怪位置。

顺便说一句,我有游戏开发和数学背景,我用XNA制作了几个2D和3D游戏。我发现LibGdx有点令人沮丧,因为它没有像我期望的那样抽象OpenGL,而且到目前为止,我一直在实验的2D绘图似乎比它应该的更令人困惑!

我还想指出,我正计划使用脊椎为我的动画。这是否应该改变我的选择,使用Y-向上或Y-向下?

共有1个答案

彭宏深
2023-03-14

如果要在屏幕中央绘制精灵,请在create方法中执行此操作

logosprite.setposition(scrw/2-logosprite.getwidth()/2,scrh/2-logosprite.getheight/2);

这里scrw是您的视口宽度,

scrh是你的视野高度,

 类似资料:
  • 我目前正在做一个libgdx项目。这就是我要遵循的结构: 单个游戏-几个屏幕-每个屏幕有一个舞台-每个舞台有一些组-每个组有一些演员-每个演员有一个精灵。 我正在玩在组之间拖动演员,但是当我将演员添加到组中时,即使我指定了其他人,坐标也始终为0,0。 我读过一些关于局部坐标和舞台坐标的内容。 问题是...如何在组的中间添加一个Actor(及其精灵)?

  • 问题内容: LibGDX具有一个坐标系统,其中(0,0)在左下角。(就像这张图片: http //i.stack.imgur.com/jVrJ0.png) 这让我无法自拔,主要是因为我要移植使用常规坐标系(其中0,0位于左上角)制作的游戏。 我的问题: 有没有简单的方法可以更改此坐标系? 问题答案: 如果您使用相机(应使用),则更改坐标系非常简单: 如果您使用TextureRegions和/或Te

  • 我的LibGdx程序有问题。我给了我的相机800高480宽。我正在坐标下绘制目标: 但是点击目标后,我的炮弹不会重叠目标矩形。 我在Touch中这样做: 不起作用。 这是一个炮弹游戏: 首先,我正在设置相机。 随机显示坐标范围内的目标。 使用Vector3新位置触摸取消投影相机。 触摸时,用加农炮位置计算目标位置并获得旋转加农炮的角度。 旋转大炮后,我向目标发射球。 现在,当我执行Rectangl

  • 问题内容: 我在使用Swift使用SpriteKit完全掌握坐标系时遇到麻烦。我看过许多资源,包括apples dev docs,但是由于某种原因,我感到非常困惑(我敢肯定这一定很简单)。 我有一个继承自SKScene的GameScene类。我只是想使用各种坐标将SKSpriteNode添加到屏幕,以习惯屏幕布局。我相信,当您创建任何SKNode并通过执行以下操作为其指定位置时, 然后使用 提供给

  • 我试图画一系列给定坐标的矩形,这只是一个x和y值的列表。 这是我的密码: 此代码应绘制类似以下内容的形状: 相反,它画的东西没有连贯的形状。

  • 基本上,我的代码是这样的: 我有一个名为cam的正交相机和一个名为batch的sprite批处理。 我想要的是要在 InputProcessor 类中创建一个矩形,该矩形与使用子画面批处理绘制的纹理区域具有相同的 x、y、宽度和高度,以便我可以触摸检测该纹理。 但是当我用“Rock.getTextureRegion.y”或“x”作为我的Bounds矩形的参数时,边界就大不相同了。 是因为那个输入类