2017-10-11 55 views
1

這是我在編碼時遇到的第一個合法問題,我不知道在哪裏可以找到答案。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;'< - 注意顯然這隻有在你只關心沿着世界x軸移動對象時纔有效。 – George

+0

當我這樣做時,我得到這個錯誤'不能修改'UnityEngine.Transform.position'的值類型返回值。考慮將該值存儲在一個臨時變量中所以我使用temp來改變這個值。 –

回答

0

當您設置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向量,而不是其副本。