角色控制器主要用于第三人称或第一人称玩家控制,不使用刚体允许游戏对象受模拟重力和其它力的影响的组件。 更多信息
参见 术语表物理。
属性 | 功能 |
---|---|
斜率限制 | 限制碰撞体只能攀爬坡度小于指示值(以度为单位)的斜坡。 |
台阶偏移 | 只有当角色距离地面比指示值更近时,角色才会踏上台阶。此值不应大于角色控制器的 height,否则会生成错误。 |
皮肤宽度 | 两个碰撞体可以彼此穿透,深度与其 Skin Width 相同。较大的 Skin Width 会减少抖动。较低的 Skin Width 会导致角色卡住。一个好的设置是使此值等于 Radius 的 10%。 |
最小移动距离 | 如果角色尝试移动的距离小于指示值,则根本不会移动。这可以用来减少抖动。在大多数情况下,此值应保持为 0。 |
中心 | 这将在世界空间中偏移胶囊碰撞体,并且不会影响角色的旋转中心。 |
半径 | 胶囊碰撞体的半径长度。这本质上是碰撞体的宽度。 |
高度 | 角色的胶囊碰撞体一种胶囊形状的碰撞体组件,用于处理游戏对象(如桶和角色肢体)的碰撞。 更多信息 参见 术语表高度。更改此值将在 Y 轴的正方向和负方向上缩放碰撞体。 |
传统的 Doom 风格的第一人称控制在物理上并不现实。角色以每小时 90 英里的速度奔跑,立即停止并原地转向。由于它很不现实,因此使用刚体和物理来创建这种行为是不切实际的,并且感觉会很奇怪。解决方案是专门的角色控制器。它只是一个胶囊形状的碰撞体一种用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似值通常更有效,并且在游戏中难以区分。 更多信息
参见 术语表,可以通过脚本告诉它向某个方向移动。然后,控制器将执行移动,但受碰撞当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少有一个具有刚体组件并且正在运动。 更多信息
参见 术语表的约束。它会沿着墙壁滑动,走上楼梯(如果楼梯低于台阶偏移)并在斜率限制内的斜坡上行走。
控制器本身不会对力做出反应,也不会自动将刚体推开。
如果您想使用角色控制器推动刚体或对象,可以通过脚本通过OnControllerColliderHit()函数对与其碰撞的任何对象施加力。
另一方面,如果您希望您的玩家角色受物理影响,那么您最好使用刚体而不是角色控制器。
您可以修改高度和半径以适应角色的网格Unity 的主要图形基元。网格构成了 3D 世界的很大一部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
参见 术语表。建议对于类人角色始终使用大约 2 米。如果您的旋转中心不在角色的中心,您还可以修改胶囊的中心。
台阶偏移也会影响这一点,请确保此值对于 2 米大小的人类在 0.1 到 0.4 之间。
斜率限制不应太小。通常使用 90 度的值效果最佳。由于胶囊形状,角色控制器将无法爬上墙壁。
皮肤宽度是调整角色控制器时最重要的属性之一。如果您的角色卡住了,很可能是因为您的皮肤宽度太小。皮肤宽度将允许对象稍微穿透控制器,但它消除了抖动并防止其卡住。
最好将您的皮肤宽度至少保持大于 0.01 且大于半径的 10%。
我们建议将最小移动距离保持为 0。
请参阅角色控制器脚本参考此处
CharacterController