使用 LibGdx 在大图像边框内平移

Pan within large image borders with LibGdx

我正在构建一个小型测试游戏,主要是where is waldo。我有一个大图像,可以四处平移并寻找 Waldo,但我不知道如何将相机保持在精灵边界 (x, y) 内。现在,您可以平移图像边界,然后永远平移。

相关代码:

sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2);

public boolean pan(float x, float y, float deltaX, float deltaY) {
        camera.translate(-deltaX * PAN_SPEED, deltaY * PAN_SPEED);
        camera.update();
        return true;
    }

没有多少,我已经尝试了很多东西,但问题是我无法弄清楚如何获得我平移的距离,如果我要放置一个"border"。现在 sprite.getX() == -2200),相机视口只有 (480x800),所以我很难处理图像大小和视口,以及平移的距离。

我以前不得不解决这个问题,但我做得很不优雅。当我平移时,我基本上只是有一个日志打印出我当前相机的位置。当我可以看到屏幕边缘(到下面的空白 GL 擦除)时,我记下了相机的位置。

我最终知道如果 camera.getX() > sprite.getWidth() - someVal,边缘会出现在屏幕上。所以,我只是添加了一个方法,如果相机超出了这些预定义的范围,它会减少相机的任何 X/Y 值。

这不是一个很好的答案,但它也能让你控制。