2014-02-27 60 views
0

我正在修改簡單多維數據集的變換。變換語法的用法

float gravity = -0.25f; 
myCube.transform.position.y -= gravity; 

不起作用。錯誤CS1612:考慮將該值存儲在臨時變量中。

float temp = myCube.transform.position.y; 
temp -= gravity; 
myCube.transform.position.y = temp; 

不起作用。相同的錯誤CS1612:考慮將該值存儲在臨時變量中。

//Create temp gravity vector 
Vector3 temp = new Vector3(0.0f, -0.25f, 0f); 
myCube.transform.position += temp; 

哪個不工作,因此這是否

private Vector3 cubePos;   
float gravity = -0.25f; 
cubePos.Set(myCube.transform.position.x, (myCube.transform.position.y - gravity), myCube.transform.position.z); 
myCube.transform.position = cubePos; 

我明白,我怎麼能修改與向量(第三個例子)的變換或調整與設定的位置。但我仍不明白爲什麼第二個例子失敗。

任何人都可以好心解釋我要去哪裏錯了嗎?

+0

的可能重複的[統一:無法修改\'UnityEngine.Transform.position'的值的類型的返回值(http://stackoverflow.com/questions/18927720/unity-cannot-修改 - a值型返回值-的-unityengine變換-POSITI) – Kay

回答

2

「transform.Position.y」是一個只讀屬性,所以你可以閱讀。存放在的Vector3位置的修改向量,然後將其設置回位置,比如

Vector3 temp = cubePos.transform.position; 
temp.x -= gravity; 
temp.y -= gravity; 

cubePos.transform.position = temp;