使用 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 值。
这不是一个很好的答案,但它也能让你控制。
我正在构建一个小型测试游戏,主要是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 值。
这不是一个很好的答案,但它也能让你控制。