我想弄清楚Unity中的2D单元系统是如何工作的。我的游戏画面是800x450像素。
说我希望我的物体位于左上角20,20像素处(因为它适用于大多数2D坐标系统)。
我已经尝试了两种"转换"相机的方法,但都把我的物体放在非常奇怪的位置,当然不是从左上方20,20像素。
我的代码:
Vector3 test1 = Camera.main.ScreenToWorldPoint (new Vector3 (20, 20, 0));
transform.position = test1;
Vector3 test2 = Camera.main.WorldToScreenPoint (new Vector3 (20, 20, 0));
transform.position = test2;
修改
我已经通过获取屏幕中心的像素进行了测试。它将我的Z位置计算为10,但我的游戏完全平坦。一切都是二维的,我正在使用正交相机。
代码
Vector3 centerInPixels = Camera.main.WorldToScreenPoint (new Vector3 (0, 0, 0));
// this logs: 450,225,10
// so the pixel center is correct for 800x450, but the z is wrong.
答案 0 :(得分:2)
屏幕空间的坐标系是:左下角=(0,0),右上角(pixelWidth,pixelHeight)。所以我理解你试图将对象放置到(20,pixelHeight-20)。那将是
Vector3 test1 = Camera.main.ScreenToWorldPoint (new Vector3 (20, Camera.main.pixelHeight-20, camera.nearClipPlane));
transform.position = test1;