【发布时间】:2013-10-25 10:10:19
【问题描述】:
我正在 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 相机?
【问题讨论】:
-
您设置的位置和角度与播放器完美同步。你想让它更流畅吗?
-
为什么没有二传手呢?我什至不能改变 camera.position 向量(因为它是最终的)只有它的属性,所以我认为这不是设置相机的正确方法。没关系:)
-
我不知道为什么会这样。您仍然可以使用与 camera.setPosition(...) 基本相同的 camera.position.set(...) 。我想这是因为这样可以减少
newVectors 的构建量,并且节省了一个方法调用,这可能会对移动设备产生影响。
标签: camera libgdx orthographic