这里写自定义目录标题
OrthographicCamera简述
Camera分为PerspectiveCamera(远景照相机)和OrthographicCamera(正交照相机)。
PerspectiveCamera : 为正常的照相机,当距离物体越远,则物体越小,一般在3D空间中使用。
OrthographicCamera :忽略了其Z轴,不管距离物体多远,其大小始终不变,一般在2D平面中使用。
OrthographicCamera我们很少手动使用,因为它在我们常用的Viewport中默认维护了一个,在大多数场景下对我们来说是隐藏的。但是加深对它的了解能提高我们的知识水平(场面话),某些场景下我们还是需要使用它的,尤其是涉及到镜头的状态改变相关等情况。
学习资料
GDX的中文资料有一些,但是都是基础,在你看完之后想要继续深入就需要去get一些英文资料了。对于OrthographicCamera相关的英文资料(实在是没见到有GDX中文的OrthographicCamera资料。。),这里给大家列出来的三个还是挺有用的:
https://github.com/libgdx/libgdx/wiki/Orthographic-camera
https://github.com/libgdx/libgdx/wiki/Projection,-viewport,-&-camera
https://github.com/libgdx/libgdx/wiki/Viewports
对于以上三篇资料,我在浏览一遍之后被自己的英语水平感动到了。所以开始陆续研究,有了以下内容,可能我的表述不准确,但是意思是没什么问题的:
主要函数
public void setToOrtho (boolean yDown, float viewportWidth, float viewportHeight)
指定是否y轴朝下,会使y轴反转,即显示时上下颠倒。width和height分别表示照相机的视口宽度和高度。此函数同时还将位置设定在其中心,并执行一次update。
public void translate (float x, float y)
相机镜头位置的移动。其实在使用stge时我们也可以获取到相机来进行设置:
stage.getCamera().translate(2f, 2f, 0);
public void update ()
更新,就是更新其位置、角度和放大倍数等参数
public Vector3 unproject (Vector3 screenCoords)
传入一个三维坐标点,该点代表在窗口上点击的位置的坐标。该方法会将该点转换到模型坐标系中该点所对应的坐标。还有一个project方法与之对应。
属性的设置
OrthographicCamera camera = new OrthographicCamera();
zoom属性。示例:
camera.zoom = 2f;
与相机显示窗口的缩放有关。相机世界的大小的缩放。同一个相机和相机内的图片,其缩放越大,图片看起来越小。相机自动适配显示屏之后,其世界的大小越大,图片相对越小。显示屏受到物理设备的影响是固定的。
这是默认大小的图片:
当zoom减小时:
zoom减小,相机看到的世界范围减小,相比之下图片就显得变大了
zoom变大,相机看到的世界范围增大,相比之下图片就显得变小了。
其原理跟视口对物理设备的适配大小有关,这个有GDX基础的应该清楚。
position属性。
camera.position.add(2f, 0, 0);//相机的x轴增加2f,显示界面是图片左移2f
camera.position.add(-2f, 0, 0);
//源码如下:
public Vector3 add (float x, float y, float z) {
return this.set(this.