2

我是 Unity 和脚本的新手。我有两个玩家,他们都在使用角色控制器。我做过这件事

  • 我已经使用了 onControllerColliderHit 函数。
  • 我已经打印了这个gameobj.name这样的名字。
  • 它将显示它击中的对象的名称

但问题是它通过了它。我希望它不能通过它,它的行为就像刚体一样。就像第二个玩家击中它时必须有力的效果一样。

4

1 回答 1

2

检查文档。CharacterController 没有RigidBody附加:

角色控制器主要用于不使用刚体物理的第三人称或第一人称玩家控制。

基本上CharacterController只是Collisor为了防止场景中角色和对象之间的竞争而设计的,但是当 2 之间发生碰撞时,它不会像您预期的那样工作CharacterControllers

特别:

控制器不会自行对力做出反应,也不会自动将刚体推开。

如OnControllerColliderHit文档中所示,您可以在发生这种情况时手动处理碰撞。例如,当角色控制器对象发生碰撞时,您可以将它们推开,因为您有移动方向:

Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
transform.Translate (-pushDir * offset);  
于 2013-02-23T14:41:03.217 回答