一 3D数学介绍
1D——数轴。
2D——两条相交数轴,两条数轴度量单位相等则称为笛卡尔座标系。
3D——空间直角座标系,分为左手/右手座标系:大拇指 - x轴,食指 - y轴, 其余三指 - z轴。左手座标系顺时针旋转,右手座标系逆时针旋转。Unity使用左手座标系。
二 Unity中的座标系
全局座标系——以(0,0,0)为原点
局部座标系——每个物体都有的自身独立的座标系,获取物体局部座标:transform.localPosition(有父物体的情况下)。
屏幕座标系——屏幕上的二维座标系,左下(0,0),右上(Screen.widtf,Screen.height)。
视口座标系——屏幕座标系单位化,左下(0,0),右上(1,1)。
-
座标系的相互转换
- 全局和局部
transform.Translate(Vector3 , Space = Space.Self/Space.World):默认按着局部座标系中的方向移动。
Transform.TransfromPoint(Vector3 pos):局部座标转全局座标。
Transform.InverseTransfromPoint(Vector3 pos):全局座标转局部座标。
Transform.TransfromVector(Vector3 vec):向量从局部座标转全局座标。
Transform.InverseTransfromVector(Vector3 vec):向量从全局座标转局部座标。
transform.position:物体世界座标。
transform.forward/right/up:当前物体自身座标的z轴,x轴,y轴正方向相对世界座标系的方向。
2. 全局和屏幕
Camera.main.WorldToScreenPoint(Vector3)
Camera.main.WorldToScreenPoint(Vector3)
3. 屏幕和视口
Camera.main.ScreenPointToViewport(Vector3)
Camera.main.ViewportToScreenPoint(Vector3)
三 向量
Vector3.magnitude:向量长量
Vector3.Normalize():向量归一化
Vector3.normalized:返回归一化后的向量
Vector3.Dot(v1, v2)——向量点乘得到标量
向量叉积:a x b =
结果垂直原向量。
Vector3.Cross(v1, v2)
四 矩阵
Matrix4x4.SetRow(int, Vector4)/SetColumn(int, Vector4):设置行/列。
Matrix4x4.SetRow(int)/SetColumn(int):返回行/列Vector4。
Matrix4x4.identity:4x4单位矩阵。
Matrix4x4.isidentity:判断是否单位矩阵。
Matrix4x4.zero:零矩阵。
Matrix4x4.transpose:返回矩阵的转置矩阵。
Matrix4x4.inverse:逆矩阵。
五 变换
2D平移矩阵——
2D缩放矩阵——
Unity中的变换
Matrix4x4.Translate(Vector3):创建平移矩阵。
Matrix4x4.Rotate(Quaternion):创建旋转矩阵。
Matrix4x4.Scale(Vector3):创建缩放矩阵。