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