如何将相机的角落与x = 0,y = 0alignment?

我需要把主摄像头的左下角放在起始位置0,0(x,y),所有的坐标都是正坐标。 我想把这个支点放在左下角,但是我不知道这是否可能。 我想手动调整它,但它显示非积极的,非整数。

在这里输入图像说明

我select16:9的长宽比,但是如果我select4:3的比例,它就变成了正确的:

在这里输入图像说明

那么,在左下角的位置0和0alignment/放置相机的最佳方法是什么?

如果你想让摄像机处于0,0,你的位置是0,0。 如果你想用0,0alignment摄像头的左下角,你需要一点math。

不需要是整数坐标。 根据视野或投影的大小以及视图的高宽比,它可以很容易地成为小数。 对于第一张图像,使用16:9宽高比,x值确实是8.88,y值是5.0。 字体大小为5,长宽比为16:9。 由于Y的尺寸较小,它总是等于正字大小。 X值是使用宽高比计算的:

X=(16/9)*5 = 8.88 Y=5 

理想情况下,您可以使用自动定位相机的脚本来计算。 在Start()方法中。

我怀疑你试图以一种可能与其他引擎标准的方式来使用Unity,这就是为什么你觉得这很奇怪或困难。 考虑一下你的方法,以及它如何适合Unity通常使用的方式。

在那里显示的位置是枢轴的位置,就像你在图像中看到的那样,相机的小发明 – 在你的情况下是从相机本身出来的“尺度”小玩意儿。 不是你的圈子在哪里。

你看到这些数字的原因是因为相机的“尺寸”参数。 这个参数(用于正交相机)表示从屏幕中间到屏幕顶部(当然从中间到底部)有多less单位单位。 在第一张图像中,尺寸设置为5.注意y = 0水平线和相机对象之间有五条水平线。 这也是为什么相机的y位置是5.你的底边与y = 0alignment,屏幕中间是5个单位以上,因此它是在y = 5。原因是5.01而不是5完全是因为你没有正确alignment它,你圈出的那个角落实际上是(0,0.01)。

在第二张图像上,尺寸参数设置为6.您将底边与y = 0水平线alignment,这意味着屏幕的中间位置(因此位置)将位于y = 6。

第一个图像不转换为干净整数的原因是因为宽高比。 16/9 = X / Y,在这里你知道屏幕的中间是(在第一种情况下)y = 0水平线上的5个单位(因为大小参数)。 16/9 = X / 5 =>求解X => X = 8.88888 …

在第二种情况下,你select了6作为你的相机的尺寸,所以4/3 = X / Y => 4/3 = X / 6 =>求解X => X = 8.这就是为什么它是一个干净的整数。

在Unity中,默认情况下,正交相机的恒定轴是垂直轴。 这意味着如果改变纵横比,相机视图的宽度将会改变,但高度将保持不变。 知道这一点,你可以做你想做的事情。 然而,它将需要一个小脚本。 你可以在技术上把它放在任何游戏对象上,但是你也可以把它放在你的相机上的脚本中。

 void Start(){ float aspectRatio = Camera.main.aspect; //(width divided by height) float camSize = Camera.main.orthographicSize; //The size value mentioned earlier float correctPositionX = aspectRatio * camSize; Camera.main.transform.position = new Vector3(correctPositionX, camSize, 0); }