Unity3d vector3.forward和transform.forward的区别

 我来答
她是我的小太阳
高粉答主

推荐于2016-01-29 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:9023万
展开全部
  1. 在unity3d中有2个forward,一个是vector3.forward和transform.forward,这两个forward其实完全不一样。他们之间的区别主要体现在在不同坐标系时的反映上。

  2. Vector3.forward这个很好理解的,Vector3.forward就是 Vector3(0, 0, 1),也就是向世界坐标的z轴。

  3. 而Transform.forward则是当前物体的正方向,可以理解为是在Scene视图中这个物体蓝色轴的方向。如果向Transform.forward移动的话,这个物体无论如何旋转,都会朝向他的前方。

百度网友000dd69
推荐于2016-09-23 · TA获得超过1351个赞
知道小有建树答主
回答量:435
采纳率:100%
帮助的人:610万
展开全部
Vector3.forward这个很好理解的,Vector3.forward就是 Vector3(0, 0, 1),也就是向世界坐标的z轴
而Transform.forward则是当前物体的正方向,您可以理解为是在Scene视图中这个物体蓝色轴的方向。如果您向Transform.forward移动的话,这个物体无论如何旋转,都会朝向他的前方。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
初乐多0I
2018-01-23
知道答主
回答量:2
采纳率:0%
帮助的人:1787
展开全部

Transform.Forward和Vector3.Forward有什么区别

举个例子:

下面写的是控制车辆行驶的部分代码,车辆不能往正前方行驶。

this.transform.Translate(transform.forward);

这样的用法是否正确呢?

一切从汽车控制说起,我们都知道,改变物体的坐标,可以模拟物体移动

场景中有辆车的位置为(0,0,0),我们想让他向前移动,通过scene界面我们发现物体向前移动得改它的z轴,于是我们可以这么写代码

void Update () {

this.transform.position += new Vector3 (0, 0, 1);

}

这么写之后,确实就往前方跑了,但是有个问题,Update一帧执行5,60次,每帧都new 一个Vector3的话,对内存是一个消耗。

于是我们用一个系统自带的Vector3.forward(它代表Vector3(0,0,1))

void Update () {

this.transform.position += Vector3.forward;

}

所以记住,Vector3.forward是一个定值,它没有任何意义!它仅仅代表Vector3(0,0,1),仅此而已,前往别给它任何意义。

那么上面的代码其实是有问题的。当我们把小车的旋转值改变之后,发现this.transform.position += Vector3.forward已经不能让车往前方走了,他需要一个正确的方向向量。

于是transform.forward应运而生,他是一个用来自动对物体旋转值算出前进方向向量的变量。

void Update () {

this.transform.position += transform.forward;

}

我们把代码改成上面那样,就可以按照车辆向前的方向行驶了。

所以记住,transform.forward是一个变值,它代表物体的前方的向量!会根据物体的旋转量自动算出来,如果物体时刻在旋转,这个transform.forward是会一直变化的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式