相机正交尺寸一定宽度
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
才会出现。
如何设置一定尺寸的单位来定义人像模式下相机正交尺寸的宽度?
我想将水平尺寸设置为 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
才会出现。