本文转载自http://blog.csdn.net/kaluluosi111/article/details/17206655,,,,,,,在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)。

                </div>

vector3.forword和transform.forword在移动上的区别相关推荐

  1. Unity3d vector3.forward和transform.forward的区别!

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

  2. Vector3基础和Transform位置

    游戏对象(GameObject)位移.旋转.缩放.父子关系.坐标转换等相关操作都由Transform处理 1.Vector3基础 Vector3主要用来表示三维坐标系中的一个点或者一个向量 // 声明 ...

  3. AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别

    自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle ...

  4. DELPHI参数几个概念上的区别 收藏

    DELPHI参数几个概念上的区别 收藏  引用参数: 引用参数用var关键字标示 procedure DoubleTheValue (var Value: Integer); begin   Valu ...

  5. 移动互联网与传统互联网体验上的区别及功能测试要点(总结自《大话移动APP测试》)...

    移动互联网与传统互联网体验上的区别 一.用户关注点 电脑和移动端的屏幕大小差别巨大,信息的有限性.珍贵性更集中. 二.场合复杂化 移动端使用的场合更多样化.复杂化,需要考虑网络稳定性.智能机电量不足. ...

  6. 区别 和esc 打印指令tsc_复印机和打印机仅仅是功能上的区别?

    你以为复印机和打印机的区别仅仅是体现在功能上?其实并非如此,可能很多人会认为二者最大的区别,仅仅是一个可以复印,一个可以打印+复印(部分打印机不支持复印).可能有人会疑惑,既然现在很多打印机已经可以做 ...

  7. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  8. exp/imp和expdp/impdp在功能上的区别:

    exp/imp和expdp/impdp在功能上的区别: 1.把用户usera的对象导入到userb emp/imp用法: formuser=usera touser=userb; empdp/impd ...

  9. mybatis中的#{}与${}在原理上的区别

    一.MyBatis中${}和#{}的区别 1.1 ${}和#{}演示 数据库数据: dao接口: List<User> findByUsername(String username);Li ...

最新文章

  1. 软件行业项目经理主要的职责是什么?(转)
  2. 汇编-Hello,world
  3. python io流a+_Python基础——文件操作及IO流
  4. Python3 除法取整取余,上下取整
  5. 未来已来——工作空间WorkSpace和物联网IoT (3)
  6. ITK:多路输出不同的类型
  7. Java Virtual Machine Stacks(虚拟机栈)
  8. asp.net如何生成图片验证码
  9. csv导入mysql_京东金融数据分析:MySQL+HIVE的结合应用案例详解【附全代码】
  10. 动态规划--总体理解
  11. 简单计算机面试题库及答案_计算机面试常问问题及答案
  12. 典型芯片封装及其特征间距
  13. 老干部活动中心计算机台数,老干部活动中心设计方案
  14. 工程项目管理系统java程序,基于jsp的工程项目管理系统-JavaEE实现工程项目管理系统 - java项目源码...
  15. 上架Google Play Store,国内这些SDK千万不能用,小心被拒!
  16. 机器学习中的Encoder和Decoder到底是什么
  17. 重新启动oracle 服务,在linux重新启动下如何设置oracle服务自动开启
  18. 2022考研日志(已完结)
  19. android闪光灯测心率,手指放在手机摄像头和闪光灯前检测心率的应用是什么原理?...
  20. win7浏览器主页修改不过来_win7系统ie主页无法修改怎么办_解决win7ie主页改不过来的办法...

热门文章

  1. java mediator模式_设计模式之中介者模式(mediator模式)
  2. Android绘制圆形图片的方法
  3. JQUERY+HTML九宫格抽奖作业代码
  4. NYOJ 整数划分(三) (划分数大集合)
  5. Debian配置ssh
  6. 只需要把脸对准摄像头就可以实现刷脸支付
  7. oracle 闪回 多长时间,Oracle闪回
  8. 权力的游戏手游如何用电脑玩 权力的游戏凛冬将至PC电脑版教程
  9. 黄褐斑产生的原因是什么?为什么黑色素只在斑片部位堆积?
  10. Tesseract OCR+Tess4j实现图片中英文识别