transform.position矢量只在场景外出现时才会改变

问题描述:

这是我在编码时遇到的第一个合法问题,我不知道在哪里可以找到答案。transform.position矢量只在场景外出现时才会改变

我有一个对象,我需要随着时间的推移在X维中移动。下面是我的代码。

Vector3 temp = transform.position; 
temp.x += forwardSpeed * Time.deltaTime; 
transform.position = temp; 

当我调试我可以看到temp.x没有改变。但是,当我将对象移出相机区域时,X开始改变。如果这些信息不够详细,请告诉我,我会提供更多代码或需要展示的内容。谢谢你的帮助。

+0

你看过你尝试修改'temp.x'的变量吗?同样假设这个例子已经完成了,不需要复制'transform.position.x + = forwardSpeed * Time.deltaTime;' George

+0

当我这样做时,我得到这个错误'不能修改'UnityEngine.Transform.position'的值类型返回值。考虑将该值存储在一个临时变量中所以我使用temp来改变这个值。 –

当您设置Vector3 temp = transform.position时,它将返回transform.position的副本。
在你的情况下,改变X位置的正确方法应该是这样的:

transform.position += (Vector3.right * forwardSpeed * Time.deltaTime); 

哪里Vector3.right是shorthand of writing Vector3(1, 0, 0)
这样,您可以确保语句正在更新transform.position向量,而不是其副本。