正交相机OrthographicCamera在GDX中的使用

本文介绍了GDX中的OrthographicCamera,它是2D场景常用的正交相机,不同于PerspectiveCamera,OrthographicCamera忽略Z轴,物体大小不会因距离变化。文章详细讲解了相机的主要函数,如setToOrtho、translate和update,以及属性如zoom和position的设置。通过示例展示了zoom如何影响显示效果,并提供了源码分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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减小,相机看到的世界范围减小,相比之下图片就显得变大了

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值