因此,我很难理解拼字相机在libgdx中的工作方式。
我想要的是拥有一台只能在一个正方形内渲染事物的相机,而让另一台相机设置整个屏幕的边界。
因此,在这里,我可以在整个屏幕上完成游戏手柄所需的操作。但是,您在右上角看到的是游戏的背景图,我想渲染仅落在您在此处看到的红色方块内的部分。我该如何实现?
相机应该这样做吗?还是我需要找出一种手动的方法?对于相机和投影矩阵的工作方式,我确实感到困惑。
在此屏幕上,使用我的屏幕摄像机的投影矩阵绘制了左侧的红色方块和绿色垫。该地图(右上方)是使用我的地图摄像头绘制的。
Map cam是一个400x400的视口,但正如您所看到的,这些图块是矩形的,并不是我想要的宽高比。如果有人可以简要说明相机的工作原理,我将不胜感激。
我之所以未在此处发布代码,是因为我觉得我需要了解相机的工作原理,以便甚至对其进行正确的编码,因此我想首先解决该问题。
遵循@ Tenfour04的建议,效果很好。万一有人想知道我想要实现什么。这是一张照片。
单凭相机无法裁剪掉屏幕的一部分。为此,您需要使用glViewport。Libgdx中已经有一个Viewport类可以为您完成此操作。您将需要两个正交摄影机(一个用于地图,一个用于GUI),但是视口可以创建自己的照相机。
private Viewport viewport;
//in create:
viewport = new FitViewport(400, 400);
//in resize:
viewport.update(width, height);
//in render:
viewport.getCamera().position.set(/*...move your map camera as needed*/);
viewport.apply(); //viewport cropped to your red square
batch.setProjectionMatrix(viewport.getCamera().combined);
batch.begin();
//draw map
batch.end();
//return to full screen viewport
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
batch.setProjectionMatrix(yourGUICamera.combined);
batch.begin();
//draw gui
batch.end();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句