2014-03-13 62 views
0

我发展我的第一个libgdx 3D游戏。到现在为止,我可以在迷宫式(硬编码)的世界中移动,碰撞检测工作。我也有一些工作A *寻路的敌人。 我也loded我的第一个(很丑陋)搅拌机模型,用FBX-Conv获得.g3db文件。出于某种原因,模特在地板上而不是站立。当我将它导出为.fbx时,可能我有一些错误的设置。 对于我tryed通过调用rotate()他约于z-Axis通过90度:在我Screenshow()方法 modelInstance.transform.rotate(Vector3.Z, 90),装载Model和实例我ModelInstance(在指定位置)之后。由于某种原因,它没有旋转。然后我把rotate方法放在render(delta)中,认为它现在将每个渲染循环旋转90度。但相反,它应该像它一样静止不动。 好了,但现在我想的modelInstancerotate到它实际上看起来,这意味着它应该旋转,这取决于我的enemie小号Vector3 direction。 我正在准备好modelInstance.transform.setTotranslation(enemie.getPosition())这是完美的作品。所以我想我也可以使用modelInstance.transform.setToRotation(Vector3 v1, Vector3 vs)v1 = enemie.getPosition()v2 = enemie.getPosition().add(enemie.getDirection)。请注意,position矢量不是直接使用的,因为它会更改add()方法中的值。这样做,我不再看到对象,也意味着它的位置是错误的。Libgdx旋转ModelInstance

这是怎么发生的? 如何使用direction矢量旋转我的modelInstance

非常感谢。

+0

Matrix4#旋转并旋转(后乘)矩阵。所以你可能想要包含一些代码来显示问题。您也可能想旋转X轴(不是Z轴)上的-90度,或者更好地检查导出到建模应用程序中的FBX设置,另请参阅:https://github.com/libgdx/libgdx/wiki/导入-搅拌机的模型 - 在-LibGDX#设定最坐标系式轴使用Matrix4#setToRotation(的Vector3,的Vector3)或旋转(的Vector3,的Vector3)根据使用的方向,其中,一个向量是的方向旋转和另一个是模型的正面(例如Vector3.Z)。 – Xoppa

+0

@Xoppa好的,再次感谢,我会用2个Vecotr3来尝试。我想我误解了他们,因为我认为,一个'Vector3'是对象位置,一个是目标位置(pos.add(方向))。如果它不起作用,我会发布代码。谢谢 – Springrbua

+0

@Xoppa我认为它现在有效。我没有看到,'Matrix4.setToTranslation()'不仅设置了'ModelInstance'的'位置',还首先将它设置为单位矩阵。目前我的'ModelInstances'只看前面,后面,左边,右边,所以我不确定它是否真的有效,但我认为它确实有效。我很快会再做一次测试。谢谢 – Springrbua

回答

0

我解决了这个与@Xoppas帮助。问题是:

  1. 我用setToTranslation动我Model给定的位置,但是这ALS重置rotation
  2. 我missunderstood的setToRotation(Vector3, Vector3)方法。

因此,解决办法是向setToTranslation第一,然后用setToRotation(Vector3 direction, Vector3 face),其中direction是方向,在我的Model正在和faceface,它应该在这个方向上,在我的情况下, Vector3.X

希望它可以帮助别人。