【Unity】Transform组件localPosition局部坐标修改问题

问题:一个物体的子物体旋转后,直接在Inspector面板修改position,不是以局部坐标系进行移动的,使用代码修改旋转后的子物体localPosition,仍然不是以局部坐标系进行移动。

解决:想以子物体的局部坐标系进行局部移动必须使用API或使用局部向量进行移动。

①API方式:

transform.Translate(new Vector3(1, 0, 2), Space.Self); 

必须是用Space.Self

②局部向量方式:

m_CharacterController.Move((m_CharacterControllerTransform.forward * v + m_CharacterControllerTransform.right * h) * Time.deltaTime * speed);

上面是CharacterController的Move方法用指定速度向量进行移动,.forward是局部Z轴,.right是局部X轴 分别乘以一个键盘输入系数v和h 进行获得一个速度向量进行移动Move。你也可以选择直接用这个速度向量应用到localPosition += (速度向量) * Time.deltaTime; 其中speed是我自定义的速度大小值。

猜你喜欢

转载自blog.csdn.net/qq_39574690/article/details/124784032
今日推荐