在多种移动分辨率下保持相同的相机视图

时间:2018-11-28 19:52:30

标签: c# unity3d

我正在创建一个3D手机游戏,其基本参考屏幕尺寸为Galaxy S9,纵横比为18:37(纵向)。播放器控制一个盒子,您可以在其中沿X轴移动+/- 5个单位,并且掉落的物体必须避免或抓住。

那部分很容易,最困难的部分是当我改变长宽比或分辨率时,游戏比例也会改变,现在X轴上的+/- 5个单位意味着我的盒子可以被切掉或完全切掉屏幕外。

我的目标是限制摄像机的显示范围,使其无论纵横比或分辨率如何始终显示相同的坐标,这是出于一定原因(在手机上为人像模式时,显然不希望它在横向或横向模式下工作)。在PC / Mac上)。

如何通过最小程度地拉伸或扭曲游戏对象来实现此目的?我看到一些人展示了一种用于正交视图的方法,但是我的相机必须对此透视。我使用的默认FoV是60,我想我可以尝试根据宽高比缩放FoV,但是我不知道如何开始。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

支持游戏的多种长宽比绝对是使游戏看起来更专业的最令人沮丧的事情之一。

最常见的技术可能是Film使用的相同技术,称为信箱技术。

Letterboxing Example

宽屏首次出现时,电视必须解决一个问题:如何在4:3宽高比的电视上播放16:9电影?有两个选项:在屏幕的顶部和底部添加黑条以使纵横比为4:3,或者可以确保所有重要的事情都在中间区域发生,这将由两个纵横比显示,然后如果宽高比不适合,请剪掉部分视图。

我的建议是在游戏区域周围放置一些看起来不错的东西,但如果游戏中断,将不会影响游戏。然后编写一个例程,该例程将在您的关卡加载时运行,以使相机缩小直到可见所有播放区域。由于缩小了,这意味着长宽比与您的播放区域不同的设备将能够看到播放区域周围的区域。只要您有足够大的非游戏区域,就不会有问题。

以下是一些很好的例子:Black Bars Extra Play Example

注意:对不起,这些示例是正交的,但对于透视而言也应如此,您可能只需要在镜头平截头体上进行投影来确定您的游戏区域是否全部可见就可以了