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

posted @ 2020-11-06 19:19  Napoleon0  阅读(1151)  评论(0编辑  收藏  举报