gpt4 book ai didi

unity-game-engine - 相机正投影尺寸一定宽度

转载 作者:行者123 更新时间:2023-12-02 02:00:15 24 4
gpt4 key购买 nike

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

我想将任何移动设备的水平尺寸设置为从屏幕左中到右中的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 个框代表您想要在屏幕上显示的所有内容。您希望您的相机始终能够 self 调整,以便它适合内部的所有这些盒子。

enter image description here

要存档此数据,您必须将盒子的宽度(我们所有盒子的所有尺寸均为 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;
}

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

enter image description here

enter image description here

关于unity-game-engine - 相机正投影尺寸一定宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69071921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com