Unity使用transform.Translate()移動子物體時遇到的小問題
情況大概是這樣:父物體A下有子物體B,希望使B在本地坐標系下移動1單位。
B物體掛腳本代碼如下:
transform.Translate(1, 0, 0, Space.Self);
當A沒有縮放,即scale為(1, 1, 1)時一切正常,但當A有縮放的時候,出現了意外的情況。
A的縮放為(2, 1, 1)時執行該移動,B將在對於A的坐標系中向x軸正方向移動世界坐標中的1單位,而不是A坐標系中的1單位(世界坐標中2單位)。
解決方法:
transform.localPosition = new Vector3(1 + transform.localPosition.x, transform.localPosition.y, transform.localPosition.z);
注意transfor.localPosition不能單獨改變x或y或z,必須以Vector3的形式設置。