Unity使用transform.Translate()移動子物體時遇到的小問題


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的形式設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM