在外部调用父物体的CharacterController.Move
,而且子物体也拥有CharacterController
组件时,可能会导致子物体不跟随的现象。这是因为CharacterController.Move
实际上移动整个物体,但是当子物体也拥有自己的CharacterController
组件时,可能存在一些相互作用或竞争条件,导致不一致的行为。
如果在父物体脚本内调用CharacterController.Move
,而子物体不管是否拥有CharacterController
,都会自动跟随父物体的移动,这可能是由于Unity在移动物体时,考虑了整个层次结构的变换。当使用CharacterController.Move
移动父物体时,它实际上移动的是整个物体,包括子物体,因为物体的变换是在整个层次结构中进行继承的。
这种行为是Unity的默认行为,不需要额外设置。只要子物体是通过变换(Transform)继承父物体的变换,当父物体移动时,子物体应该会跟随移动。
所以,如果你在父物体脚本内调用CharacterController.Move
,而子物体不管是否拥有CharacterController
都会自动跟随,这是正常的行为,不需要特别的同步操作。这种自动的跟随是因为整个物体在层次结构中被看作是一个单一的单元来移动的。