Unity中的各种坐标系及转换

mac2024-03-26  80

全局坐标系 (Workld coordinate system) 全局坐标系 是用来描述场景中所有物体位置,方向的基准,也称为世界坐标系。 在Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置。 可以使用transform.position来获取游戏对象的世界坐标。

局部坐标系 局部坐标系是也称为模型坐标系或者物体坐标系,每个物体都有自身独立的物体坐标系。当物体移动或者改变方向时,和物体相关联的坐标系将随之移动或者改变。模型Mesh保存的顶点坐标均为局部坐标系下的坐标。

本地坐标 transform.localPosition 可以获得物体在父物体的局部坐标系中的位置点。父子关系,子物体以父物体的坐标点为自身的坐标原点。如果该物体没有父物体,那马transform.localPosition获得的依然是物体在全局坐标系中的坐标,如果该物体有父物体,则获得的是其父物体的局部坐标系中的坐标。

屏幕坐标系 屏幕坐标是建立在屏幕上的二维坐标系,以像素来定义的。鼠标位置坐标属于屏幕坐标,通过Input.mousePosition可以获得该位置的坐标。手指触摸屏幕也是属于屏幕坐标,Input.GetTouch(0).position可以获得单个手指触摸屏幕时手指的坐标。

视口坐标 视口坐标是将Game视图的屏幕坐标单位化

转换 Transform.TransformPoint(verctor3 position):将一个坐标点从局部坐标系转换到全局坐标系

Transform.inverseTransformPoint(Vector3 position):将坐标系从全局坐标系转换到局部坐标系

Transform.TransformDirection(vector3 direction):将一个方向从局部坐标系转换到全局坐标系

Transform.InverseTransformDirection(vector3 direction): 将一个方向从全局坐标系转换到局部坐标系

Transform.TrasformVector(Vector3 vector): 将一个向量从局部坐标系转换到全局坐标系

**Transorm.InverseTransformVector(Vector3 vector):将一个向量从全局坐标系转换到局部坐标系。

Transform.forward,Transform.right.Transform.up:当前物体的物体坐标系的zxy轴在世界坐标系上的指向

屏幕坐标系与全局坐标系的转换: Camera.ScreenToWorldPoint(Vector3 position):将屏幕坐标系转换为全局坐标系

Camera.WorldToScreenPoint(vector3 position):将全局坐标系转换为屏幕坐标系

屏幕坐标系与视口坐标系的转换: Camera.ScreenToViewportPoint(Vector3 position):将屏幕坐标转换为视口坐标。     Camera.ViewportToScreenPoint(Vector3 position):将视口坐标转换为屏幕坐标。

全局坐标系与视口坐标系转换: Camera.WorldToViewportPoint(Vector3 position):将全局坐标转换为视口坐标。     Camera.ViewportToWorldPoint(Vector3 position):将视口坐标转换为全局坐标。

最新回复(0)