zoukankan      html  css  js  c++  java
  • unity常用的坐标系转换

      当调用别人的接口时,经常会有获取位置或向量的接口。遇到这些数据时,先要弄清楚现在获取的数据在哪个坐标系下的。

    是否需要进行坐标系变换,一般提供的位置和向量都是在世界坐标系的,此时需要注意:

      ①对方的坐标系是左手坐标系还是右手坐标系

     因为Unity是左手坐标系,如果接口提供的数据是基于右手坐标系的话,我们需要把z值取反后,看起来的效果才是正常的。

      ②如果我们通过接口拿到的数据,我们想把它跟随场景中“Camera Rig”物体移动和旋转

     为了实现“Camera Rig”物体移动我们拿到的位置也跟着移动,“Camera Rig”物体旋转时我们拿到的位置和向量也跟着旋转。我们

    需要用“Camera Rig”物体的移动和旋转创建一个变换矩阵,把拿到的数据乘这个矩阵即可实现。

        Vector3 point = GetPoint();
        Vector3 dir = GetDir();
    
        //创建矩阵
        Transform target = CameraRig.transform;
        Matrix4x4 mat = Matrix4x4.TRS(target.position, target.rotation, Vector3.one);
    
        //变换位置点
         point = mat.MultiplyPoint(point);
    
         //变换向量
         dir = mat.MultiplyVector(dir);
  • 相关阅读:
    DOM-DOMTree-查找

    用sql语句操作数据库
    数据查询基础
    【案例】城市地址三级联动
    【案例】城市地址二级联动
    【案例】高仿百度注册页
    【案例】自由运动小球
    【案例】使用上下左右键控制元素的移动
    事件
  • 原文地址:https://www.cnblogs.com/fengxing999/p/11888987.html
Copyright © 2011-2022 走看看