美文网首页
Unity tranform和vector3的区别

Unity tranform和vector3的区别

作者: LeoYangXD | 来源:发表于2016-12-28 19:03 被阅读180次

我们在项目中经常会遇到是选择用transform.foward和vector3.foward以及其他方向的坐标

  • transform.(方向),这个是自身坐标系,后边只能跟foward,right,up,而其他的三个方向我们可以用负号去表示
    vector3.(方向),这个是世界坐标系,后边可以跟六个方向这里我就不多说了。
    他们两个都是一个单位向量
  • 对于自身坐标和世界坐标我一直不甚理解,感觉他们就是一个单位向量,甚至有的时候觉得他们就是一样的,等到做了一个小项目以后才发现他们的区别下边我们就以foward为例来说明
    • 物体自身坐标系和世界坐标系重合
Paste_Image.png

transform.foward就是(0,0,1),而vector3.foward也是(0,0,1),他们两个是完全一样的。

  • 物体自身坐标系和世界坐标系不一样
Paste_Image.png

上图是以Y轴为基础旋转90,此时世界坐标系和自身坐标系就不一样了,此时的vector3.foward是(0,0,1),而此时的transform.foward就是(1,0,0),而这个transform.foward的值是怎么来的呢?每个物体都有自己的朝向,我们按照他的前方方向可以找到一个点就箭头1指向的那个点,而这个点在世界中的坐标系就是(1,0,0),这个只是跟物体自身的旋转角度有关系,与他的position是没有关系的。

Paste_Image.png

这次我旋转了45度,transform.foward我们自己心算下就是(1/√2,0,1√2),我们用代码输出一下transform.foward

Paste_Image.png

因为这个四舍五入,所以输出的是(0.7,0,0.7),所以我们以后自己注意下就好。

相对坐标问题

Paste_Image.png Paste_Image.png

这个相对坐标是世界坐标,它的运动方向是按照物体自身的前方移动的,也就是世界坐标的右方
但是加入我们把相对坐标换下

Paste_Image.png

这次我们的相对坐标是自身坐标系,而此时物体的运动方向

Paste_Image.png

运动方向的参数都是transform.forward,但是运动方向却不一样,相对于世界坐标系的大家都好理解,但是相对自身坐标系的运动方向去不是那么好理解了。相对于世界坐标系的时候,我们相当于把transform.forward转化了一次,相对于自身坐标系的时候,我们就需要把那个参数转化两次,说起来有点拗口,先把自身的坐标系当做是世界坐标系,那transform.forward就是(1,0,0),而我们的相对坐标系就自身坐标系,我们再转化一次,上图就是再顺时钟旋转90度,运动方向相对于真正的世界坐标系就是(0,0,-1)。
箭头1就是转换的第一次的transform.forward,箭头2就是转换的第二次的transform.forward


Paste_Image.png

相关文章

  • Unity tranform和vector3的区别

    我们在项目中经常会遇到是选择用transform.foward和vector3.foward以及其他方向的坐标 t...

  • 18_Mesh

    Procedural Mesh02 Vector3[] vertices, 告诉unity点在哪 int[] Tr...

  • Unity 基础 - Vector3

    Vector 是向量,矢量的意思,向量既有大小,又有方向,Verctor3 就是三维向量,一个三维向量会有三个分量...

  • unity的常用Vector3

    Vector3.Angle() :向量之间的夹角,返回两个向量之间较小的角度(在旋转计算中常常用到) Vector...

  • 旋转效果

    tranform:rotateZ()实现平面旋转,或者直接tranform:rotate(); 给要旋转的元素加上...

  • Unity基础-脚本生命周期

    1.Unity脚本 和 C#脚本区别? unity脚本继承自MonoBehavior。 unity脚本不能new。...

  • 点乘与叉乘

    public static Vector3 Cross(Vector3 lhs, Vector3 rhs);叉乘的...

  • unity vector3 dot 使用

    Vector3 dir = (target.transform.position - transform.posi...

  • json序列化失败

    问题: json 序列化时不支持结构体,比如Unity 中的Vector3类型不支持,所以我们要自己转型以下 使用...

  • 《Unity Shader入门精要》| 读书笔记(一)

    最近又开始学习Unity Shader编程了,感觉和之前又很大区别。之前看的时候对Unity Shader是什么,...

网友评论

      本文标题:Unity tranform和vector3的区别

      本文链接:https://www.haomeiwen.com/subject/nyoyvttx.html