libgdx 模型实例位置在调用 camera.position.set 或 camera.lookat 后改变

libgdx modelinstances position changed after calling camera.position.set or camera.lookat

我的相机初始设置如下: camera.lookAt(200f, 100f, -300f); camera.position.set(0f, 0f, 0f); 模型实例显示如下: initial image

我编写了一个点击按钮并调用了一组方法: camera.lookAt(200f, 100f, -300f); camera.position.set(0f, 0f, 0f);

画面变成了下图: call camera methods again

在初始图像和按钮点击之间,我没有做任何其他事情。 为了解决这个问题,我尝试添加 camera.up.set(xyz), camera.normalizedUp() 但没有解决问题。

有什么建议吗?提前致谢。

尝试先设置位置,然后执行 lookat() 调用

您将相同的相机位置矢量对象设置为模型实例位置矢量对象,因此当相机移动时,模型实例也会这样做。只需为每个模型实例创建一个新向量,将其位置设置为相机位置 myModelPos.set(camera.pos),一切都应该没问题。

我做了一个example of basic mario 64 movement on this guthub,希望对你有帮助。

我发现不是ModelInstances被移动了。它是由 resize() 移动的相机。在 resize() 方法下,我编写了 viewport.update(width, height, true) 代码,这将使相机在视口内居中,因此相机会在我不注意的情况下移动。此外,天空盒的编码方式是它会随相机移动,看起来相机没有移动。