Unity中有三种坐标系:屏幕坐标、视图坐标和世界坐标。
世界坐标:使用“点”来考虑场景中对象的绝对定位。您可以选择让单位代表您想要的任何长度,例如 1 单位 = 10 米。屏幕上实际显示的内容取决于相机的放置位置和方向。
查看坐标:给定相机视口中的坐标。视口是一个想象的矩形,通过它观察世界。这些坐标是成比例的,范围从 (0,0) 到 (1,1)。
屏幕坐标:表示设备屏幕上位置的实际像素坐标。
请注意,无论使用哪个相机进行查看,任何给定对象的世界坐标始终相同,而视图坐标取决于所使用的相机。屏幕坐标还取决于设备的分辨率以及相机视图在屏幕上的位置。
“Camera”对象提供了几种在这些不同坐标系之间进行转换的方法,例如“ScreenToViewportPoint”“ScreenToWorldPoint”等。
示例:将对象放置在屏幕的左上角
float distanceFromCamera = 10.0f;
Vector3 pos = Camera.main.ScreenToWorldPoint (new Vector3 (0, Camera.main.pixelHeight, distanceFromCamera));
transform.position = pos;
The ScreenToWorldPoint
函数采用 Vector3 作为参数,其中 x 和 y 表示屏幕上的像素位置(0,0 是左下角),z 分量表示距相机的所需距离。无限多个 3D 位置可以映射到同一屏幕位置,因此您需要提供此值。
只需确保所需位置位于相机的剪辑区域内即可。此外,您可能需要为对象选择合适的枢轴,具体取决于您希望对象的哪一部分位于左上角居中。