如何防止我的相机在 LibGDX 中延迟?

How do I prevent my camera from being delayed in LibGDX?

我正在尝试在 LibGDX 中制作一个移动系统,其中所有内容都以 5 像素的增量移动,我猜是为了让它看起来更像素化。我目前一次将玩家移动 5 个像素,然后移动相机以匹配玩家的位置,让他始终出现在屏幕上。这是我用来执行此操作的代码(每次调用渲染时 运行s):

Vector2 newCoordinates = MovementUtilities.getIncremented(x, y);
    cam.position.set(newCoordinates.x, newCoordinates.y, 0);
    batch.draw(texture, cam.position.x-15, cam.position.y, width, height);

MovementUtilities.getIncremented() 的代码:

public static final int INCREMENT = 5;

public static Vector2 getIncremented(int x, int y) {
    return new Vector2(x-(x % INCREMENT), y-(y % INCREMENT));
}

但是,当我尝试 运行 它时,会发生这种情况: https://youtu.be/C_r0mOaxJgU 播放器好像在抖动,好像镜头跟不上他什么的。

有人知道发生了什么事吗?我错过了什么吗?

您可以试试这样的方法,让我知道它对您的效果如何。

    // initialize with your beginning position if you'd like.
private float x, y;
// initialize with your beginning position if you'd like.
private final Vector2 coordinates = new Vector2(x, y);

private final float moveSpeed = 5.0f;

public void function() {
    getNewPosition();
    cam.position.set(coordinates.x, coordinates.y, 0.0f);
    cam.update();

    // draw
}

public void getNewPosition() {
    coordinates.set(x - moveSpeed, y - moveSpeed);
}

您也可以尝试从凸轮位置 X 移除 -15 部分,看看会发生什么。

你正在更新相机的内部位置,但没有告诉相机更新视图矩阵,我猜这一定是在其他地方不规则地发生,所以视觉上不同步。 如果更改相机参数,请更新视图矩阵(视图如何转换为屏幕)。

把这个放在你的 setPosition

之后

cam.update();