zoukankan      html  css  js  c++  java
  • unity坐标转换问题

    unity最经常使用的几种坐标。屏幕坐标。世界坐标。ngui坐标,相对于父物体的坐标(localPoisition)。

    可是有时候这几种坐标相互转换何其困难,让自己狠抓头。

    不得不操作的方式是创建虚拟体,然后来回改变他的父节点(parent),

    只是unity提供了两个方法挺好用的。攻克了全部坐标转换问题,

    InverseTransformPoint: 绝对坐标转相对坐标,也就是世界坐标转你想要放到的父节点下的相对坐标。

    TransformPoint: 相对坐标转绝对坐标,也就是你想要放到的父节点下的相对坐标转成世界坐标,

    调用方法就是,比方你想把鼠标点击的位置转换成你某一个父节点下的ngui坐标。

    操作例如以下

                    Vector3 vec = new Vector3();
    		Ray ray=UICamera.mainCamera.ScreenPointToRay(Input.mousePosition);// 向屏幕发射线
    		RaycastHit hit;
    		if(Physics.Raycast(ray,out hit))
    		{
    			vec = 你想转到的父节点物体.transform.InverseTransformPoint(hit.point);
    		}

    这样就得到了一个屏幕点击转向ngui的父节点的相对坐标。其它的物体也是用此类方法使用,

    这样保证了操作坐标的流畅性,不用创建那么多的虚拟体,

    当然相对坐标转绝对坐标也一样的使用方法。不用创建虚拟体。你想把某一个父节点下的相对于这个父节点的某一个位置转成世界坐标跟上边一样的使用方法。

    你当前的父物体.transform.TransformPoint(相对于该父物体的位置);

    这样就能够转成世界坐标,世界坐标通用场景全部物体,想做什么就能够做什么了

  • 相关阅读:
    插入节点方法appendChild和insertBefore
    大河剧《独眼龙政宗》梵天丸喜多对话台词
    ie6绝对定位层元素消失
    strtok函数相关理解
    [创建型模式] Prototype
    用C实现旋转棒进度条指示器
    使用不规则数组(ragged array)和agetline()将整个文件读入内存
    [创建型模式] AbstractFactory
    xcode_4_and_ios_sdk_4.3__final相关下载地址
    [创建型模式] Singleton
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6905207.html
Copyright © 2011-2022 走看看