本文介绍了Unity中的几种常用坐标系以及坐标系之间的转换方法,并在文末附上一个展示各种坐标系数据的Demo。
1. 世界(局部)坐标系
以世界原点为坐标原点建立的三维坐标系,获得GameObject世界坐标的接口为Transform.position 。局部坐标系是GameObject以Parent的世界坐标点为坐标原点建立的三维坐标系,GameObject的局部坐标即与Parent的相对位置。若GameObject无Parent,其局部坐标与世界坐标相同,获得GameObject局部坐标系的接口为Transform.localPosition。
世界坐标转化为屏幕坐标 Camera.WorldToScreenPoint
世界坐标转化为视口坐标 Camera.WorldToViewportPoint
2. 屏幕坐标系
以屏幕左下角为原点建立的一个二维坐标系,屏幕的左下角坐标为(0, 0),右上角为(Screen.width, Screen.height)。通过Input.mousePosition获取的鼠标坐标是一个屏幕坐标。通过屏幕坐标计算世界坐标需要指定世界坐标所在点距离相机的距离,而通过射线进行物理碰撞检测的方式需要GameObject带有Collider组件。
屏幕坐标转化为世界坐标 Camera.ScreenToWorldPoint
屏幕坐标转化为视口坐标 Camera.ScreenToViewportPoint
3. 视口坐标系
以屏幕左下角为原点建立的一个二维坐标系,左下角为(0, 0),右上角为(1, 1)。
视口坐标转化为世界坐标