我正在使用Scala& amp;进行2D侧滚动游戏。 libGDX。我的问题是我希望有一个固定的房间大小,比如4000px * 720px。
我希望窗口大小为1280px * 720px,我需要一台可以移动的正交相机,并显示“房间”/“地图”的正确部分。 问题是如何将房间大小设置为特定大小,然后使用正交相机显示其中的一部分?
目前我正在尝试使用本教程:https://github.com/libgdx/libgdx/wiki/Orthographic-camera
我可以在启动程序时设置窗口大小:
object DesktopLauncher {
def main(args: Array[String]) {
var config: LwjglApplicationConfiguration = new LwjglApplicationConfiguration
config.foregroundFPS = 60
config.width = 1280
config.height = 720
new LwjglApplication(new Controller, config)
}
}
我可以像这样设置相机尺寸:
val h: Float = Gdx.graphics.getHeight()
val w: Float = Gdx.graphics.getWidth()
cam = new OrthographicCamera(100, 100 * (h / w))
cam.position.set(cam.viewportWidth / 2f, cam.viewportHeight / 2f, 0)
但是如何指定相机和房间大小为我想要的像素?
答案 0 :(得分:0)
如果我正确理解您的问题,您希望相机在到达房间边缘时停止显示黑条(停止在房间边缘滚动)。我假设您使用的是Viewport。 (你应该) 以下是我的表现:
您需要使用Viewport#unproject()
将屏幕坐标投影到世界坐标。您将窗口宽度投影到世界坐标,让我们调用此变量camWorldX
。在移动相机之前,您需要检查是否camWorldX + 1 < roomWidth
。如果true
移动相机,则不要。对于否定说明,请取消投放0
并检查是否camWorldX - 1 < 0
。您可以将相同的逻辑应用于Y
轴。
要了解有关LibGDX坐标系的更多信息,请click here。要详细了解Viewport#unproject()
,click here。