【问题标题】:LibGDX - Orthographic camera translation and rotationLibGDX - 正交相机平移和旋转
【发布时间】: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(...) 。我想这是因为这样可以减少 new Vectors 的构建量,并且节省了一个方法调用,这可能会对移动设备产生影响。

标签: camera libgdx orthographic


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多