关于Unity坐标系
Inspector中的坐标(本地坐标)
在Inspector窗口中的position以及rotation都是属于本地坐标(相对于父对象的坐标),例如:父对象的世界坐标为(1,1,1),子对象的Inspector中显示的坐标为(1,1,1),则子对象中世界坐标为(2,2,2),本地坐标localPosition(1,1,1)。代码中,transform.position是世界坐标,transform.localPosition是本地坐标
父节点与子节点的结构
父节点的Inspector窗口
子节点的Inspector窗口
运行结果
屏幕坐标系以及视口坐标系
屏幕坐标:以左下角为(0,0),右上角为(width, height)
大小为Game中设置
Input.mousePositon所记录的坐标,也是屏幕坐标,坐标值可以超出屏幕大小
视口坐标:以左下角为(0,0),右上角为(1,1),相当于把屏幕坐标比例化
坐标间的相互转换
Transform类中的方法(世界坐标与本地坐标的转换):
1、Tranform.TransformPoint(Vector3 position)
将物体的本地坐标(Inspector中的坐标)转换成世界坐标(在整个场景中的坐标)
2、Transform.TransformDirection(Vector3 direction)
将一个本地向量转换成世界坐标系中的向量
3、Transform.InverserTransformPoint(Vector3 position)
将当前的世界坐标转换成本地坐标
4、Transform.InverserTransformDirection(Vector3 direction)
将当前世界坐标系中的向量转换成本地坐标系中的向量
Camera类中方法(世界坐标与视口坐标、屏幕坐标的转换):
1、Camera.ScreenToWorldPoint(Vector3 position)
将屏幕坐标转换成世界坐标
2、Camera.WorldToScreenPoint(Vector3 position)
将世界坐标转换成屏幕坐标
3、Camera.WorldToViewportPoint(Vector3 position)
将世界坐标系转换成视口坐标
4、Camera.ViewportToWorldPoint(Vector3 position)
将视口坐标转换为世界坐标