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

LibGDX角度/旋转问题

周阳成
2023-03-14

我正在使用平铺地图编辑器创建一个简单的平铺地图。在我的地图中,我有几个矩形,如果我创建一个宽度为50,高度为10的矩形,并将其旋转正好90°,保存地图并将其加载到我的LibGDX项目中,形状会正确呈现——但是如果我使用随机角度,例如26°,然后我再次渲染地图,我没有得到所需的结果,事实上我得到了完全相反的所需角度。

我使用以下方法直接从地图读取平铺地图浮动:

 Map map = new TmxMapLoader().load(mapLocation + mapName + mapExtension);
 for (MapLayer mapLayer : map.getLayers()) {
     for (MapObject mapObject : mapLayer.getObjects() {
          MapProperties objectProperties = mapObject.getProperties();

          float objectRotation = objectProperties.get("rotation") != null ? Float.parseFloat(objectProperties.get("rotation").toString)) : 0.0f;
          objectRotation = MathUtils.degRad * objectRotation;
     }
 }

数学。degRad将直接从地图属性读取的度数转换为弧度,但在这条线上的某个地方发生了误读,或者我完全错过了什么。

稍后,我创建bodyDef并使用bodyDef将其角度设置为上述对象旋转。角度=对象旋转,然后使用默认值创建我的身体。

共有1个答案

吕宸
2023-03-14

你缺少一点数学知识。

数学。cosDeg(angleInDegrees)数学。sinDeg(angleInDegrees)

 类似资料:
  • 当我旋转图像(图像类)时,我需要帮助解决一个小问题。 这个想法是旋转一个球形图像,移动是通过手指的触摸和拖动,它可能是顺时针的,也可能不是顺时针的,到目前为止,这是正确的。 我希望当球体的角度是90的倍数时会发生一些事情,问题是当我用手指旋转球体时,有时它太快了,以至于球体的角度不总是通过90的倍数,例如,如果它在87,当我移动手指时,它会在不接触90的情况下移动到94。 这是我的拖动旋转代码 我

  • 好吧,我真的很困惑,我以前旋转过精灵,没有问题,比如当船在海洋中移动时旋转它,但是出于某种原因,这次我遇到了一个非常大的问题。所以我在资产文件中创建了一个纹理,但不是静态纹理。我使用以下方式加载纹理: 然后我通过调用来调用主类中的资产: 然后我有一个专门为这个主要角色设计的动画课程,因为他的动画与其他角色非常不同。 然后我有一个渲染类来绘制所有东西,我有对象在一个名为的世界对象中,我用以下方式绘制

  • 我正在尝试围绕我的模型旋转我的透视相机。模型位于中心(0,0,0)点。这是我的旋转相机方法: 我试着去中心,旋转5度,然后回到同样的距离。然而,旋转似乎不起作用,我不知道为什么,任何帮助都非常感谢。

  • 使用数学时,似乎存在某种计算故障。atan2()计算角度,然后使用批处理在纹理旋转中使用该角度。draw()。系统。已使用out,并且已确认数学。atan2给出了错误的角度。 代码: 传入的两个变量,和是鼠标的和坐标,由和 纹理,的绘制方式如下: 其中是纹理的宽度,是纹理高度。 可以观察到,当鼠标直接在玩家上方时,角度计算为-148。当鼠标围绕玩家旋转时,所有角度的角度都是错误的。 问题是:我用来

  • 这是它的要点,你可以看到旋转角度从0-236然后跳119-0,很奇怪。 我想得到一个模型相对于其y轴的角度,单位为度(0-360)。然而,到目前为止,使用libgdx,我无法使用以下方法获得预期结果: 假设我只围绕y轴旋转,这是从libgdx中的变换矩阵中获取旋转角度的正确方法吗? 我已经包含了一个完整的示例类来证明我从以这种方式获得旋转中获得的角度不是预期的,而不是0-360的完整旋转,我得到类

  • 我正在用一艘宇宙飞船做一个游戏,当按下“前进”按钮时,后面会出现一个火的图像。这只在太空船垂直站立时起作用。当它倒转时,它与宇宙飞船的后部没有完全对齐。这是我为其创建的类的更新函数。 我试着将原点设置为火箭的原点,这对我来说似乎是合乎逻辑的,但我认为我不完全理解原点是什么。 [编辑1] 我不认为问题出在原点上,我现在把它设置为 我认为这个问题与我总是将y设置为(火箭弹射出的火的高度是火箭弹高度的一