问题:一个物体的子物体旋转后,直接在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是我自定义的速度大小值。