我之前在其他平台上开发游戏时,x / y坐标系对我来说是有意义的。左上角代表游戏屏幕,坐标为(0,0),右下角坐标为(width,height)。现在我正在尝试跳到Unity 2d,但我不明白游戏屏幕如何工作。如果我在屏幕上放置了背景和角色对象,则当我移动角色时,他的x和y值在-3和3之间变化...非常小的坐标,并且与我设置的游戏分辨率(1024x768)不匹配。有没有好的教程可以理解Unity中的游戏网格?或者有人可以解释一下我如何实现我想做的事情吗?
我之前在其他平台上开发游戏时,x / y坐标系对我来说是有意义的。左上角代表游戏屏幕,坐标为(0,0),右下角坐标为(width,height)。现在我正在尝试跳到Unity 2d,但我不明白游戏屏幕如何工作。如果我在屏幕上放置了背景和角色对象,则当我移动角色时,他的x和y值在-3和3之间变化...非常小的坐标,并且与我设置的游戏分辨率(1024x768)不匹配。有没有好的教程可以理解Unity中的游戏网格?或者有人可以解释一下我如何实现我想做的事情吗?
float distanceFromCamera = 10.0f;
Vector3 pos = Camera.main.ScreenToWorldPoint (new Vector3 (0, Camera.main.pixelHeight, distanceFromCamera));
transform.position = pos;
ScreenToWorldPoint
函数需要一个 Vector3 作为参数,其中 x 和 y 表示屏幕上的像素位置(0,0 表示左下角),而 z 分量表示所需距相机的距离。无限数量的 3D 位置可以映射到相同的屏幕位置,因此您需要提供这个值。
请确保所需位置位于摄像机的裁剪区域内。此外,根据您希望以左上角为中心进行对齐的对象部分,您可能需要选择适当的枢轴点。使用:
Camera.main.WorldToScreenPoint (transform.position);
这使我可以将我的游戏对象的位置转换为屏幕的x和y坐标系。