在Editor中调整相机
和场景视图中的其他游戏物体一样,相机本身也可以通过使用移动和旋转工具来进行调整。但这种方式比较难用,调整起来又慢又不精确。我们可以使用Move To View功能来快速调整相机所拍摄的画面。
1. 打开Camera_Projection_Scene(Scenes目录)。
2. 在Hierarchy中找到PlayerArmature,然后按F键,定位到这个游戏物体。
3. 旋转缩放场景视图到我们想要相机所能看到的画面。
4. 在Hierarchy中选中Main Camera,然后按Ctrl+Shift+F(Windows)或Command+Shif+F(MAC)。或者在菜单中选择GameObject->Align With View。
用这种方法,我们可以快速将相机移动到我们想要拍摄的画面所需的位置和角度。
透视投影
在Unity中,相机有两种投影类型:透视投影(Perspective)和正交投影(Orthographic)。默认情况下,Unity采用透视投影类型。
透视投影和我们所看到的真实世界的物体的情况是一样的,简单来说就是近大远小。透视投影渲染场景时会带有深度信息。
设置视野(Filed of View)
FOV表示相机的可视角度,换句话说就是相机能看到场景里多少东西。这个值的单位是度,默认是60度。
我们尝试将这个值设置为30度来对比看看。在相机的Inspector中,将Field of View修改成30。
上图相机位置不变,左边图的相机FOV设置为30度,右边为60度。可以看到FOV减小后,整个画面被放大了,角色也被裁剪了一部分。
上图中,左边图的相机的位置是相机原始位置,FOV是30度;右边图的相机位置移动到了更靠近角色的位置来模拟出和左边图差不多的效果,但FOV为60度。可以看到FOV的值变小会极大影响背景中所能看到的物体范围。
相机FOV的值的选取非常重要。如果FOV值较低,可能会造成用户产生晕动症(motion sickness)。这个值可以做成是用户可配置的,如果用户无法配置,则要确保FOV值满足一定的指导原则。参考:Game accessibility guidelines | If the game uses field of view (3D engine only), set an appropriate default for the expected viewing environmenthttps://gameaccessibilityguidelines.com/if-the-game-uses-field-of-view-3d-engine-only-set-an-appropriate-default-for-the-expected-viewing-environment/ 对于要电视游戏,用户和屏幕之间的距离至少有几米远,相机的FOV的值至少要是60度(Unity的默认值)。但如果用户游玩时用的显示幕和玩家的眼睛靠的很近,则FOV要设置到一个比较大的值,至少是90度。
下面,我们将相机的FOV设置为120度。设置完后,我们会发现相机所能看到的东西大大增加了。但同时我们也可以看到,场景也被不自然地拉伸了(类似广角镜头拍摄的图)。这种方式可以用来实现出一些我们想要的美术效果,但我们也要注意,大于90度的FOV同样可能会引起晕动症。
正交投影
正交投影相机,也叫做2D相机,只会绘制场景X轴和Y轴的信息,Z轴信息(深度)被完全丢弃。
1. 在Main Camera的Inspector中,将Projection修改为Orthographic。
现在场景看起来会发生很大的不同,所有物体看起来就好像是在同一个平面上一样。
2. 点击运行进入Play模式,然后用键盘的WASD控制角色跑动。
我们可以发现,无论角色是远离相机还是靠近相机,角色的大小都没有发生变化,这是由于Z轴并没有被绘制。因此,正交投影相机对于卷轴游戏(side-scrolling games)非常有用。
调整相机的大小
1. 退出Play模式,回到场景视图。
2. 在Main Camera的Inspector中,调整一下Size属性看看效果。
我们可以在相机预览窗口看到,调整Size属性后,在场景视图中,相机整体的缩放框在变化。正交相机只能整体缩放,无法进行单个轴的scale调整。