var worldPosition = trans.parent.TransformPoint(trans.localPosition);
return gameObject.transform.parent.InverseTransformPoint(worldPosition);
第一句把目标的local坐标转换成世界坐标。
第二句把世界坐标转换成自己的local坐标。
这里需要注意两次转换都应该调用父亲的转换函数
World Space(世界坐标)
Screen Space(屏幕坐标)以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。
ViewPort Space(视口坐标)视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。
世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标。其中camera为场景中的camera对象。
屏幕坐标→视口坐标:camera.ScreenToViewportPoint(Input.GetTouch(0).position);这样可以将屏幕坐标转换为视口坐标。其中camera为场景中的camera对象。
视口坐标→屏幕坐标:camera.ViewportToScreenPoint();
视口坐标→世界坐标:camera.ViewportToWorldPoint();