Unity坐标系

一 坐标系简介

1 世界坐标系

可以用transform.position获取


世界坐标系
2 局部坐标系

局部坐标系是相对于父物体来说的:
当2个游戏对象互为父子关系,那么子物体就会以父物体的坐标点为自身坐标原点

局部坐标系

下面是子物体的Transform组件和打印的坐标结果,可以看出Transform组件显示的坐标是相对于父物体为坐标原点的


子物体的Transform组件
打印结果
3 相机坐标系

根据观察位置和方向建立坐标系。
用次坐标系可以方便判断物体是否在相机前面,以及物体之间先后遮挡顺序,它会优先渲染离它最近的物体

4 屏幕坐标系

建立在屏幕上的二维坐标系,用来描述像素在屏幕上的位置
以屏幕左下角为坐标原点(0,0)。
右上角为(Screen.width,Screen.height),

void Update () {
       if (Input.GetMouseButtonDown(0))
       {
           //获取游戏界面鼠标左键点击的坐标
           Debug.Log(Input.mousePosition);
       }
}
void Start (){ //获取游戏界面里选中物体的坐标
        Vector3 vc = Camera.main.WorldToScreenPoint(transform.position);
        Debug.Log(vc);
}
5 视口坐标系

视口坐标是标准的和相对于相机的。相机左下角为(0,0)点,右上角为(1,1)点。

二 坐标系的转换

1 全局坐标系转局部坐标系
public GameObject a;
void Start () {
       Debug.Log("this的坐标" + this.transform.position);
       Debug.Log("a的坐标" + a.transform.position);
       //输出的是a-this的坐标
       Vector3 v2 = this.transform.InverseTransformPoint(a.transform.position);
       Debug.Log("全局坐标变局部坐标" + v2);
}
打印结果

2 局部坐标系转全局坐标系

public GameObject a;
void Start () {
        Debug.Log("this的坐标" + this.transform.position);
        Debug.Log("a的坐标" + a.transform.position);
        //输出的是a+this的坐标
        Vector3 v1 = this.transform.TransformPoint(a.transform.position);
        Debug.Log("局部转全局" + v1);
}
打印结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 3D坐标系是在做3D项目开发中的基础概念,一般来说3D软件或者开发工具都是采用笛卡尔坐标系来描述物体的坐标信息。笛...
    S_H_C阅读 6,469评论 0 6
  • 一、Unity3D中有哪些坐标系? 坐标系这个概念最早是由法国数学家笛卡尔提出的,并由此创造了用代数方法来研究几何...
    OneMore2018阅读 4,612评论 0 7
  • 无论是2d还是3d游戏开发,图形学都是基础,解析几何的基本思想是将几何图形抽象成点的运动轨迹,从而点可以作为组成图...
    tmgg阅读 12,913评论 2 4
  • 一 、世界坐标系--全局坐标系: 用来描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系。Unity场景中创...
    _凉笙阅读 5,283评论 0 4
  • 笛卡尔坐标系的定义 :1、每个2D笛卡尔坐标系都有一个特殊的点,称为原点(0,0)它是坐标系的中心。2、每个2D笛...
    好怕怕阅读 3,436评论 3 8