相机正交尺寸一定宽度

Camera orthographic size certain width

如何设置一定尺寸的单位来定义人像模式下相机正交尺寸的宽度?

我想将水平尺寸设置为 5 米 正好 从屏幕的左中到右中适用于任何移动设备?我怎样才能做到这一点?我从视频剪辑中找到了这段代码,但我不明白它,我认为它对我没有帮助,因为我没有游戏领域,而且我的游戏世界会在游戏过程中自动生成(它是无限的 2D 滚动游戏)。

[SerializeField] private SpriteRenderer gameField;
void Start()
{
    float screenRatio = (float)Screen.width / (float)Screen.height;
    float targetRatio = gameField.bounds.size.x / gameField.bounds.size.y;
   
    if (screenRatio > targetRatio)
    {
        Camera.main.orthographicSize = gameField.bounds.size.y / 2;
    }
    else
    {
        float differenceInSize = targetRatio / screenRatio;
        Camera.main.orthographicSize = gameField.bounds.size.y / 2 * differenceInSize;
    }
}

不知道unity为什么不自动处理这些问题?

我找到了你说的那个视频,其实很简单。作为参考,它是 this 视频。我会尽力向你解释。
这 5 个框代表您要在屏幕上显示的所有内容。您希望您的相机始终自行调整,以便它适合其中的所有这些盒子。

要存档,您必须将我们的盒子的宽度(我们所有的盒子在所有维度上都是 1 米宽)乘以屏幕高度除以屏幕宽度。然后你想将该数字除以二。

boxes.width * screen.height / screen.width * 0.5

在我们的代码中它看起来像这样:

public float sizeInMeters;

void Start()
{
    float orthoSize = sizeInMeters * Screen.height / Screen.width * 0.5f;

    Camera.main.orthographicSize = orthoSize;
}

如果你想从中间向左和向右各五米,那么在 sizeInMeters 变量中输入 10。如果您从左到右的总屏幕宽度应仅覆盖 5 米,则必须将 5 放入 sizeInMeters 变量中。 只有当您希望用户能够将他的 phone 翻转到垂直位置时,您代码中的 if 才会出现。