4.3D数学-坐标系
4.1 知识点
主要学习内容
世界坐标系
this.transform.position
-返回物体在世界坐标系中的位置this.transform.rotation
-返回物体在世界坐标系中的旋转四元数this.transform.eulerAngles
-返回物体在世界坐标系中的欧拉角this.transform.lossyScale
-返回物体在世界坐标系中的缩放- 修改它们将导致相对于世界坐标系的变化
物体坐标系
this.transform.localPosition
-返回物体在其父对象坐标系中的位置this.transform.localEulerAngles
-返回物体在其父对象坐标系中的旋转四元数this.transform.localRotation
-返回物体在其父对象坐标系中的欧拉角this.transform.localScale
-返回物体在其父对象坐标系中的缩放- 修改它们将导致相对于父对象物体坐标系的变化
屏幕坐标系
Input.mousePosition
-返回鼠标在屏幕坐标系中的位置Screen.width
-返回屏幕坐标系的宽度Screen.height
-返回屏幕坐标系的高度
视口坐标系
- 摄像机上的 Viewport Rect 视口范围
坐标转换相关
世界转本地
this.transform.InverseTransformDirection
将世界空间中的方向向量转换为本地空间中的方向向量。
Vector3 worldDirection = new Vector3(1, 0, 0);
Vector3 localDirection = this.transform.InverseTransformDirection(worldDirection);
this.transform.InverseTransformPoint
将世界空间中的点转换为本地空间中的点。
Vector3 worldPoint = new Vector3(5, 2, 3);
Vector3 localPoint = this.transform.InverseTransformPoint(worldPoint);
this.transform.InverseTransformVector
将世界空间中的向量转换为本地空间中的向量。
Vector3 worldVector = new Vector3(2, 1, 0);
Vector3 localVector = this.transform.InverseTransformVector(worldVector);
本地转世界
this.transform.TransformDirection
将本地空间中的方向向量转换为世界空间中的方向向量。
Vector3 localDirection = new Vector3(0, 1, 0);
Vector3 worldDirection = this.transform.TransformDirection(localDirection);
this.transform.TransformPoint
将本地空间中的点转换为世界空间中的点。
Vector3 localPoint = new Vector3(2, 3, 1);
Vector3 worldPoint = this.transform.TransformPoint(localPoint);
this.transform.TransformVector
将本地空间中的向量转换为世界空间中的向量。
Vector3 localVector = new Vector3(1, 0, 0);
Vector3 worldVector = this.transform.TransformVector(localVector);
世界转屏幕
Camera.main.WorldToScreenPoint
将世界空间中的点转换为屏幕空间中的点。
Vector3 worldPoint = new Vector3(5, 2, 3);
Vector3 screenPoint = Camera.main.WorldToScreenPoint(worldPoint);
屏幕转世界
Camera.main.ScreenToWorldPoint
将屏幕空间中的点转换为世界空间中的点。
Vector3 screenPoint = new Vector3(100, 200, 0);
Vector3 worldPoint = Camera.main.ScreenToWorldPoint(screenPoint);
世界转视口
Camera.main.WorldToViewportPoint
将世界空间中的点转换为视口空间中的点。
Vector3 worldPoint = new Vector3(5, 2, 3);
Vector3 viewportPoint = Camera.main.WorldToViewportPoint(worldPoint);
视口转世界
Camera.main.ViewportToWorldPoint
将视口空间中的点转换为世界空间中的点。
Vector3 viewportPoint = new Vector3(0.5f, 0.5f, 0);
Vector3 worldPoint = Camera.main.ViewportToWorldPoint(viewportPoint);
视口转屏幕
Camera.main.ViewportToScreenPoint
将视口空间中的点转换为屏幕空间中的点。
Vector3 viewportPoint = new Vector3(0.5f, 0.5f, 0);
Vector3 screenPoint = Camera.main.ViewportToScreenPoint(viewportPoint);
屏幕转视口
Camera.main.ScreenToViewportPoint
将屏幕空间中的点转换为视口空间中的点。
Vector3 screenPoint = new Vector3(100, 200, 0);
Vector3 viewportPoint = Camera.main.ScreenToViewportPoint(screenPoint);
4.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson04_3D数学_坐标系 : MonoBehaviour
{
void Start()
{
#region 知识点一 世界坐标系
//目前学习的和世界坐标系相关的
//this.transform.position;//世界坐标系位置
//this.transform.rotation;//世界坐标系旋转四元数
//this.transform.eulerAngles;//世界坐标系欧拉角
//this.transform.lossyScale;//世界坐标系缩放
//修改他们 会是相对世界坐标系的变化
#endregion
#region 知识点二 物体坐标系
//相对父对象的物体坐标系的位置 本地坐标 相对坐标
//this.transform.localPosition;//物体坐标系位置
//this.transform.localEulerAngles;//物体坐标系旋转四元数
//this.transform.localRotation;//物体坐标系欧拉角
//this.transform.localScale;//物体坐标系缩放
//修改他们 会是相对父对象物体坐标系的变化
#endregion
#region 知识点三 屏幕坐标系
//Input.mousePosition//鼠标在屏幕坐标系的位置
//Screen.width;//屏幕坐标系的宽
//Screen.height;//屏幕坐标系的高
#endregion
#region 知识点四 视口坐标系
//摄像机上的 Viewport Rect 视口范围
#endregion
#region 知识点五 坐标转换相关
//世界转本地
//this.transform.InverseTransformDirection
//this.transform.InverseTransformPoint
//this.transform.InverseTransformVector
//本地转世界
//this.transform.TransformDirection
//this.transform.TransformPoint
//this.transform.TransformVector
//世界转屏幕
//Camera.main.WorldToScreenPoint
//屏幕转世界
//Camera.main.ScreenToWorldPoint
//世界转视口
//Camera.main.WorldToViewportPoint
//视口转世界
//Camera.main.ViewportToWorldPoint
//视口转屏幕
//Camera.main.ViewportToScreenPoint
//屏幕转视口
//Camera.main.ScreenToViewportPoint;
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com