Unity3d Transform.forward和Vector3.forward的区别!
在Unity中有两个forward,一个是Transform.forward一个是Vector3.forward。
对于Vector3来说,它只是缩写。没有其它任何含义。
- Vector3.forward ,(0,0,1)的缩写。//在transform.Translate()中使用时,如果不表明坐标系,则为物体的局部坐标,即物体自身的正前方。
- Vector3.right, (1,0,0)的缩写。
- Vector3.up , (0,1,0)的缩写。
对于Transform.forward来说,它代表当前物体的物体坐标系的z轴在世界坐标系上的指向。(世界坐标系中的蓝色轴)。
如果使用Transform.Translate。需要注意Vector3和Transform是不同的。
1.Spcae.World
transform.Translate(Vector3.forward * Time.deltaTime, Space.World);
transform.Translate(transform.forward * Time.deltaTime, Space.World);
当局部坐标=世界坐标时。

当局部坐标!=世界坐标时。(旋转30度)

2.Spcae.Self
transform.Translate(Vector3.forward * Time.deltaTime, Space.Self);
transform.Translate(transform.forward * Time.deltaTime, Space.Self);
当局部坐标=世界坐标时。

当局部坐标!=世界坐标时。(旋转30度)

所以你会发现,当使用transform.Translate时参数是Space.Self。Transform.forward的移动方向会很奇怪。。
原因是transform.Translate参数Space.Self需要一个局部坐标系的方向向量,但是transform.forward是世界坐标的方向向量。
所以除非必要,否则别用这句代码:
transform.Translate(transform.forward * Time.deltaTime, Space.Self);
这会让你物体的前进方向变的混乱。
应该用:
transform.Translate(transform.forward * Time.deltaTime, Space.World);//或者
transform.Translate(Vector3.forward * Time.deltaTime, Space.Self);
小问题:为什么旋转30°时,transform.Translate(transform.forward * Time.deltaTime, Space.Self);,这句代码会让物体往60°的方向移动呢?
首先transform.forward是自动对物体旋转值算出前进方向向量的变量。同时 transform.forward是当前物体的物体坐标系的z轴在世界坐标系上的指向。系统根据物理本身的局部坐标系计算出z轴在世界坐标系上的旋转值是30°,但是你使用transform.Translate并且设置了Space.Self按照局部坐标移动,那么,transform.forward这个30°的世界坐标的旋转又要根据物体的局部坐标系转化成局部坐标,那么两次30°+30°就是最后我们所看到物体往世界坐标的60°旋转方向移动。
Unity3d Transform.forward和Vector3.forward的区别!的更多相关文章
- transform.forward和vector3.forward
Vector3.forward的值永远是(0,0,1)(这里的(0,0,1)是世界坐标的(0,0,1)),而transform.forward我们可以理解为其对应物体的z轴方向,是一个向量,而不是一个 ...
- Unity3d vector3.forward和transform.forward的区别!
原文连接: http://blog.csdn.net/kaluluosi111/article/details/17206655 在unity3d中有2个forward,一个是vector3.forw ...
- 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其实完全不一样.他们之间的区别主要体现在在不同坐标系时的反映上. ...
- Vector3.forward
这里我要说的就是Vector3.forward ,它等价与 new Vector3(0,0,1):它并不是一个坐标,它是一个标准向量,方向是沿着Z轴向前.这样平移一次的距离就是1米, 如果 Vecto ...
- Forward reference vs. forward declaration
Q:Im a bit confused. What is the difference between forward declaration and forward reference? Forwa ...
- CSS动画详解及transform、transition、translate的区别
刚看完一节慕课网的css动画,在此总结下 1. 先说下 transform.transition.translate的区别 transform 和 transition是css的2个属性,transl ...
- 【转】Unity3D Transform中有关旋转的属性和方法测试
Transform有关旋转个属性和方法测试 一,属性 1,var eulerAngles : Vector3 public float yRotation = 5.0F; void Update() ...
随机推荐
- Linux内核同步机制之completion【转】
Linux内核同步机制之completion 内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束.这个活动可能是,创建一个新的内核线程或者新的用户空间进程.对一个已有进程的 ...
- pythonGUI编程-tkinter
图形用户界面( G raphical U ser I nterface,GUI)编程 Python2.0级以下的版本叫做Tkinter,Python3.0改名为tkinter tkinter 模块:添 ...
- 【工具推荐】截图工具 Snipaste
0. 说明 [官网介绍] Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开 Snipaste,按下 F1 来开始截图,再按 F3,截图就在桌面置顶显示了.就这么简 ...
- October 10th 2017 Week 41st Tuesday
If you focus on what you left behind you will never see what lies ahead. 如果你只顾回头看,那么你永远也看不见前方有什么. Ye ...
- 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一.所需材料 1.公司注册相关信息 2.营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费 ...
- 10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.创建MySQL数据 create database solr; use solr; DROP TABLE ...
- 3532: [Sdoi2014]Lis
Description 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出将删去 ...
- Kafka学习之路 (二)Kafka的架构
一.Kafka的架构 如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU.Memory等),若干broker(Kaf ...
- spring引入properties变量报错
通过properties配置文件配置数据源,代码如下: <bean class="org.springframework.beans.factory.config.PropertyPl ...
- JAVA框架 json数据交互
一.导入依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId& ...