当前位置: 首页 > 面试题库 >

在LibGDX(Java)中更改坐标系

夏朝
2023-03-14
问题内容
LibGDX具有一个坐标系统,其中(0,0)在左下角。(就像这张图片: http
//i.stack.imgur.com/jVrJ0.png)

这让我无法自拔,主要是因为我要移植使用常规坐标系(其中0,0位于左上角)制作的游戏。

我的问题: 有没有简单的方法可以更改此坐标系?


问题答案:

如果您使用相机(应使用),则更改坐标系非常简单:

camera= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

如果您使用TextureRegions和/或TextureAtlas,则除此以外,您所需要做的就是调用region.flip(false,true)。

我们默认使用y-up的原因(您可以如上所示轻松更改)如下:

  • 您的模拟代码很可能会使用带有y方向的标准欧几里德坐标系
  • 如果您使用3D,则可以
  • 默认坐标系是OpenGL中的右手坐标系,为y向上。当然,您可以使用一些矩阵魔术来轻松更改它。

libgdx中仅使用y-down的两个位置是:

  • 像素图坐标(左上角原点,y向下)
  • 以窗口坐标给出的触摸事件坐标(左上左原点,y-下)

同样,您可以使用Camera或少量矩阵数学轻松地将使用的坐标系更改为所需的坐标系。



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

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

  • 所以我坐在这里,拿着一部800像素的手机..并且< code > gdx . graphics . getwidth()也应该返回800.. 但是当我从获得坐标时,当我一直向左触摸屏幕时,我得到的最高数字是780左右。和右侧约20。 所以我的坐标都错了,所以我所有的按钮和东西都不能正常工作,等等。 知道发生了什么吗?

  • 我正在做一个采矿游戏,如果你点击某个地方,你会删除那里的方块。现在所有的块都是正方形,只有当我的2d布尔数组中的点为真时才绘制。所以我试着把这个位置设置为false,只要你点击这里,就是我的输入处理器的触地方法 我也在将相机转换为我的玩家位置。grid.manipulate网格接受一个x和一个y并将其设置为false。我的玩家位于网格坐标中的(10,126),当我点击他旁边时,它显示我正在点击(3

  • 我正在制作一个2D rpg游戏与盒。所以,我有个问题。当我的一个身体(角色)与另一个身体(一扇门)碰撞时地图需要改变,我是否应该为地图创建新的屏幕并改变它们?还是有更简单的解决方案?

  • 摄像机旋转后,坐标让我摸不着头脑。 我有一个照相机,一个角色和一张地图。这个玩家只能在以下方向行走:北(90°),南(270°),东(0°),西(180°)。 从玩家的camera.RotateRound(...,...,...)位置旋转摄像机后,玩家开始在旋转的结果中向新的方向移动。 null