3.碰撞发生时,CharacterController不会推动其它物体移动,也就是说CharacterController不会对它所碰撞的物体施加物理作用。除非我们在脚本中添加了OnControllerColliderHit()函数,在该函数中使用被碰撞物体的rigidbody对被碰撞物体施加力。
补充:仅仅加上CharacterController组件还不行,还必须在脚本中调用CharacterController的方法,这样才能屏蔽Rigidbody
// this script pushes all rigidbodies that the character touches // 这个脚本推动所有的角色碰撞到的刚体。 var pushPower = 2.0; function OnControllerColliderHit (hit : ControllerColliderHit) { var body : Rigidbody = hit.collider.attachedRigidbody; // no rigidbody // 没有刚体。 if (body == null || body.isKinematic) return; // We dont want to push objects below us // 我们不想推动在我们下边的物体。 if (hit.moveDirection.y < -0.3) return; // Calculate push direction from move direction, // we only push objects to the sides never up and down // 通过移动方向计算推动方向,我们只把物体推到两侧,从不向上和向下推。 var pushDir : Vector3 = Vector3(hit.moveDirection.x, 0, hit.moveDirection.z); // If you know how fast your character is trying to move, // then you can also multiply the push velocity by that. // 如果你知道你的角色移动的有多快,那么你也可以用它乘以推动速度。 // Apply the push // 应用推力。 body.velocity = pushDir * pushPower; }