如何计算屏幕位置

时间:2015-06-29 13:14:31

标签: c# unity3d

我想弄清楚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.

1 个答案:

答案 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;