Unity3d vector3.forward和transform.forward的区别!
原文连接:
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。
Unity3d vector3.forward和transform.forward的区别!的更多相关文章
- vector3.forward和transform.forward的区别!
http://blog.163.com/bowen_tong/blog/static/20681717420146654927791/ vector3.forward和transform.forwar ...
- 关于Vector3.forward和Transform.forward
在Unity中有两个forward,一个是Transform.forward一个是Vector3.forward. 对于Vector3来说,它只是缩写.没有其它任何含义. Vector3.forwar ...
- unity------------------------------transform.forward与Vector.forward的区别
在unity3d中有2个forward,一个是vector3.forward和transform.forward,这两个forward其实完全不一样.他们之间的区别主要体现在在不同坐标系时的反映上. ...
- Unity3d Transform.forward和Vector3.forward的区别!
在Unity中有两个forward,一个是Transform.forward一个是Vector3.forward. 对于Vector3来说,它只是缩写.没有其它任何含义. Vector3.forwar ...
- transform.forward和vector3.forward
Vector3.forward的值永远是(0,0,1)(这里的(0,0,1)是世界坐标的(0,0,1)),而transform.forward我们可以理解为其对应物体的z轴方向,是一个向量,而不是一个 ...
- [unity菜鸟] controller.SimpleMove(transform .forward); 无法移动
今天做demo时遇到一个问题:当使用角色控制器操作物体,用 controller.SimpleMove(transform .forward); 语句时物体不能移动,搜索请教了很久,最后终于googl ...
- zoom和transform:scale的区别
小tips: zoom和transform:scale的区别 这篇文章发布于 2015年11月3日,星期二,00:52,归类于 css相关. 阅读 7876 次, 今日 8 次 by zhangxin ...
- css中zoom和transform:scale的区别
css中zoom和transform:scale的区别 关于zoom: 以前只是看到别人的代码中用过zoom,自己从未使用过,今天在探究ie7兼容inline-block时,发现里面提到了zoom.下 ...
- Forward reference vs. forward declaration
Q:Im a bit confused. What is the difference between forward declaration and forward reference? Forwa ...
随机推荐
- novnc安装教程
适配于centos7 1.安装vncserver # stop selinux and iptables setenforce systemctl stop firewalld systemctl d ...
- Codeforces 1132D - Stressful Training - [二分+贪心+优先队列]
题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有 $n$ 个学生,他们的电脑有初始电量 $a[1 \sim n]$,他们的电脑每分钟会耗 ...
- [No000015D]【李笑来 笔记整理】个人商业模式升级
提前知道地图对你到达目标是至关重要的. 比较女性与男性的成本:女性的成本更高(周期性激素分泌波动),所以不要再这个时候和女朋友较劲,她也是身不由己,当你知道这件事情之后,你就会试着去理解她. 下面这张 ...
- debootstrap 配置
在主机sudo su 切换到root mount proc jessie/proc -t proc mount sysfs jessie/sys -t sysfs chroot jessie /bin ...
- block diagonal matrix 直和 块对角矩阵 不完美 有缺陷 缩放 射影几何
小结: 1.block diagonal matrix 直和 块对角矩阵 A block diagonal matrix is a block matrix that is a square mat ...
- 使用U盘为虚拟机安装系统
前提:使用虚拟机安装WIN8系统时,由于WIN8镜像文件大于4G无法使用虚拟安装,所以使用U盘安装. 1.装有U盘启动的WINPe系统 (1)下载 老毛桃U盘启动盘制作工具 (2)U盘清空 2.虚拟机 ...
- 20165225《Java程序设计》第六周学习总结
20165225<Java程序设计>第六周学习总结 1.视频与课本中的学习: - 第八章学习总结 String类 String对象(常量,对象) 字符串并置(结果仍是常量) 常用方法 le ...
- Linux中常用命令
.cd命令 cd 回到跟目录 cd uqihong 进入到uqihong这个文件夹(且cd命令只能一级一级的进入) 2.复制命令 cp -r /usr/local/tomcat ...
- JS实现倒计时(天数,时,分,秒)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" > <titl ...
- 九九乘法表python3写入文件中
写入文件代码如下: with open("e:\\test01.txt","w+",encoding="utf-8") as wq: for ...