1

我正在使用正交相机在 LibGDX 中制作 2D 自上而下的游戏。相机应该跟随玩家,与他一起旋转等。我也在使用 Box2D,这意味着每个精灵都通过模型坐标和角度进行更新。我想用相机做同样的事情。

这段代码:

Vector3 v = new Vector3(playerModel.getPosition().x, playerModel.getPosition().y, 0);
camera.rotateAround(v, Vector3.Z, -playerModel.getAngle() * MathUtils.radiansToDegrees);
camera.translate(deltaMove);
camera.update();

只给我相对平移和旋转 - 相对于相机的当前位置和角度。尽管这可行,但我认为这不是最好的,是吗?:

Vector3 v = new Vector3(playerModel.getPosition().x, playerModel.getPosition().y, 0);
camera.up.x = (float) Math.cos(playerModel.getAngle());
camera.up.y = (float) Math.sin(playerModel.getAngle());
camera.position.x = v.x;
camera.position.y = v.y;
camera.update();

是否可以使用正交相机更顺畅地进行操作,还是应该使用 classis 3D 相机?

4

1 回答 1

0

您可以通过在最后一个相机属性和新相机属性之间插入当前帧的相机属性来消除相机的抖动。如果您不使用某种插值,相机运动会非常不稳定。

我希望这会有所帮助,我将讨论如何实施这样的改变,但这似乎有点超出了这个问题的范围。

于 2016-01-20T04:14:28.563 回答