4.坐标系

  1. 4.3D数学-坐标系
    1. 4.1 知识点
      1. 主要学习内容
      2. 世界坐标系
      3. 物体坐标系
      4. 屏幕坐标系
      5. 视口坐标系
      6. 坐标转换相关
        1. 世界转本地
          1. this.transform.InverseTransformDirection 将世界空间中的方向向量转换为本地空间中的方向向量。
          2. this.transform.InverseTransformPoint 将世界空间中的点转换为本地空间中的点。
          3. this.transform.InverseTransformVector 将世界空间中的向量转换为本地空间中的向量。
        2. 本地转世界
          1. this.transform.TransformDirection 将本地空间中的方向向量转换为世界空间中的方向向量。
          2. this.transform.TransformPoint 将本地空间中的点转换为世界空间中的点。
          3. this.transform.TransformVector 将本地空间中的向量转换为世界空间中的向量。
        3. 世界转屏幕
          1. Camera.main.WorldToScreenPoint 将世界空间中的点转换为屏幕空间中的点。
        4. 屏幕转世界
          1. Camera.main.ScreenToWorldPoint 将屏幕空间中的点转换为世界空间中的点。
        5. 世界转视口
          1. Camera.main.WorldToViewportPoint 将世界空间中的点转换为视口空间中的点。
        6. 视口转世界
          1. Camera.main.ViewportToWorldPoint 将视口空间中的点转换为世界空间中的点。
        7. 视口转屏幕
          1. Camera.main.ViewportToScreenPoint 将视口空间中的点转换为屏幕空间中的点。
        8. 屏幕转视口
          1. Camera.main.ScreenToViewportPoint 将屏幕空间中的点转换为视口空间中的点。
    2. 4.2 知识点代码

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

×

喜欢就点赞,疼爱就打赏