在unity3d中有2个forward,一个是vector3.forward和transform.forward,这两个forward其实完全不一样。他们之间的区别主要体现在在不同坐标系时的反映上。

我们分别对比一下 vector3和transform两个向量的forward 在 self自身坐标系 和 world世界坐标系 中的表现,我们用transform.translate函数来验证。。

注:自身坐标!=世界坐标 意味着两个坐标系不重合。

self自身坐标系——space.self

vector3.forward

transform.forward

在这里我就感到很困惑了,为什么transform.forward转自身坐标后会有如此诡异的结果。

画完上面的图后终于明白了。

self自身坐标系的转换是这样的:

将想要转换的向量跟相对于世界坐标轴整个移到目标坐标轴上。

在transform.forward身上就是

那么这里总结一下 vector3.forward和transform.forward的区别。

vector3.forward的值永远等于(0,0,1)。

transform.forward的值则等于当前物体的自身坐标系z轴在世界坐标上指向,因此不一定等于(0,0,1),但是其magnitude长度是1。

这也就是为什么,transform.forward 转换为self自身坐标系时会有这种结果。

在world世界坐标系——space.world上的情况则完全相反。

因此,想要让物体向前移动,在transform.translate()上和直接修改transform.position上,差别是挺大的。

transform.position 本身就是世界坐标。

1、transform.position+= vector3.forward

等于是在世界坐标的z轴前进。

2、transform.position+=transform.forward

等于是物体自身坐标系的z轴前进。

3、transform.translate(vector3.forward,space.self)

等于是自身坐标系的z轴前进。

效果等同于2。

4、transform.translate(transform.forward,space.self)

上面出现的奇葩结果就是这个用法引起的,建议不是特殊需要别用这个用法。

5、transform.translate(vector3.forward,space.world)

等于是让物体沿着世界坐标的z轴前进。

效果等同于1。

6、transform.translate(transform.forward,space.world)

等于是让物体沿着“物体自身坐标z轴在世界坐标上的方向”前进(等同与物体沿着自身z轴前进)。

效果等同于2。

没想到这篇小小的文章这么多人看,搞得我诈尸回来补充点说明。

其实transform大家可以理解为 scene视图里面 每个gameobject身上的那三个箭头,你也可以理解为transform就是自身坐标系。transform上每个箭头就是对应transform.up transform.right transform.forward 这三个世界坐标向量,这三个向量绝对不是vector3.up vector3.forward vector3.right之流全是(0,1,0)(0,0,1)(1,0,0),不过magnitude都是1就是了,从图里看就知道了。

图中 transform.forward=(0, 0.9, -0.5)

那么 transform.translate(tranform.forward,space.self) 就是 往自身坐标系的(0, 0.9, -0.5) 这个方向走。

那么用Transform的TransformPoint()转换成世界坐标就是 (-0.7, 3.9, -25.8),也就是gameobject这个物体的实际移动方向是(-0.7, 3.9, -25.8)。

转载于:https://www.cnblogs.com/w-wfy/p/7623494.html

unity------------------------------transform.forward与Vector.forward的区别相关推荐

  1. Transform.Forward和Vector3.Forward的正确使用方法

    Transform.Forward和Vector3.Forward的正确使用方法 发布:Unity3d培训 来源:unity3d培训教程 2016-07-23 浏览次数:3465 很多人对于Trans ...

  2. forward和redirect有什么区别?

    题目:下面有关forward和redirect的描述,正确的是() ? A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求 B.执行forward时,浏 ...

  3. java中forward和redirect_java中转发forward和重定向redirect的区别

    Forward(转发) 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是 ...

  4. ArrayList和Vector有什么区别?

    本文翻译自:What are the differences between ArrayList and Vector? 两个数据结构ArrayList和Vector之间有什么区别,你应该在哪里使用它 ...

  5. C++面试题:list和vector有什么区别

    C++面试题:list和vector有什么区别? 考点:理解list和vector的区别 出现频率:★★★★ 解析: vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好 ...

  6. 【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解(ArrayList、 LinkedList 和 Vector之间的区别)

    ArrayList. LinkedList 和 Vector之间的区别 ArrayList. LinkedList 和 Vector都实现了List接口,是List的三种实现,所以在用法上非常相似.他 ...

  7. C++面试题:list和vector有什么区别?

    C++面试题:list和vector有什么区别? 考点:理解list和vector的区别 出现频率:★★★★ 解析: vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好 ...

  8. matlab里的scalar,scalar_scalar与vector之间的区别

    scalar与vector之间的区别 有些物理量,既要由数值大?包括有关的单位),又要由方向才能完全确定.这些量之间的运算并不遵循一般的代数法则,而遵循特殊的运算法则.这样的量叫做物理矢量. 有些物理 ...

  9. 计算机英语forward,勇往直前:forward的用法解析

    Part of being optimistic is keeping one's head pointed toward the sun, one's feet moving forward. -- ...

最新文章

  1. [Head First设计模式]生活中学设计模式——迭代器模式
  2. canva五角星空html,【Canvas】canva实例-星空、日出的效果
  3. CRM的business partner和employee在后台的搜索
  4. 科室鄙视链最低端,居然是这类人
  5. 用 #inculde file = ../fiel 报1031错误
  6. 安全员b本计算机考试,2019年安全员B证考试题库试题资料一.doc
  7. 树莓派3代linux,树莓派 3B 入门 ARMv8 Arch Linux
  8. H5 Laya 字体
  9. 系统分析师2020年真题解析
  10. 活动 | 腾讯云证通 给你送长鹅~
  11. 智能家居 (9) ——人脸识别摄像头安装实现监控功能
  12. win的反义词_常见英语反义词、近义词、同义词及词形转换(附电子版)
  13. 基于深度学习的商品检索技术
  14. 我的世界1.7.10服务器修改器,我的世界1.7.10 TMI内置修改器安装方法及使用说明...
  15. windows2003中了一键还原7.9的招了
  16. Buffer基本使用
  17. 五险一金 | 养老保险及其退休金计算
  18. c#开发Windows服务程序及部署
  19. 爱玩软件 | Windows设置程序自启动
  20. 【图文直播全文记录】酷狗音乐的大数据实践(纯干货)

热门文章

  1. 第二篇 - EOS Currency 合约案例
  2. Android开源框架源码鉴赏:Okhttp
  3. python堆堆乐教程_python堆排序,详细过程图和讲解,这样做小白都会
  4. md5算出来不一样_天天吃味精,您知道是用什么做的吗?说出来可能和您想的不一样...
  5. 打上花火中文谐音歌词_【1分钟学会闽南语歌】茄子蛋-《浪子回头》-闽南语音译歌词视频...
  6. QML编程之旅 -- 元素布局
  7. devc++鼠标变成了光标_游戏鼠标到底能不能提升你的实力?
  8. python程序设计丁亚涛课后答案_python程序设计丁亚涛版课后答案
  9. ubuntu 20.04 设置网关_如何把Ubuntu升级到Ubuntu 20.04 LTS 最新版本
  10. Codeforces 1004F Sonya and Bitwise OR (线段树)