1 坐标转换
1.1 局部坐标 与 世界坐标
局部->世界 obj.transform.transformPosition(v)
世界->局部 obj.transform.reverseTransformPosition(v)
得到的其实是 obj.localPosition + v 的世界坐标
1.2 屏幕坐标 与 世界坐标
这个有点麻烦,x、y坐标容易转换,关键是z坐标,比如想要某个物体跟着鼠标移动,屏幕坐标系下的x、y坐标直接取 Input.mousePosition 就行,z坐标则要取该物体世界坐标转换为屏幕坐标之后的z值。最后将这个坐标(屏幕坐标系下的)转换为世界坐标,完成。具体代码:
Vector3 tmp = Camera.main.WorldToScreenPoint(obj.transform.position);
Vector3 mouse = Input.mousePosition;
mouse.z = tmp.z;
obj.transform.position = Camera.main.ScreenToWorldPoint(mouse);