Character Controller(角色控制器)

  角色控制器主要用于对第三人称或第一人称游戏主角的控制,并不使用刚体物理效果。

属性说明
Slope Limit坡度限制。该项用于设置所控制的角色对象只能爬上小于或等于该参数值的斜坡。
Step Offset台阶高度。该项用于设置所控制的角色对象可以迈上的最高台阶的高度。
Skin Width皮肤厚度。该参数决定了两个碰撞体可以相互渗入的深度,较大的参数值会产生抖动的现象,较小的参数值会导致所控制的游戏对象被卡住,较为合理的设定是:该参数值为 Radius 值的 10%。
Min Move Distance最小移动距离。如果所控制得角色对象的移动距离小于该值,则游戏对象将不会移动,这可以避免抖动,大多数情况下将该值设为 0。
Center中心。该参数决定了胶囊碰撞体在世界坐标中的位置,并不影响所控制的角色对象的中心坐标。
Radius半径。胶囊碰撞体的长度半径,同时该项也决定了碰撞体的宽度。
Height高度。该项用于设置所控制的角色对象的胶囊碰撞体的高度,改变此值将会使碰撞体沿着 Y 轴的正负两个方向同时伸缩。

  角色控制器不会对施加给它的作用力作出反应,也不会作用于其他的刚体。如果想让角色控制器能够作用于其他的刚体对象,可以通过脚本 OnControllerColliderHit() 函数在与其相碰撞的对象上使用一个作用力。另外,如果想让角色控制器受物理效果影响,那就最好用刚体来代替它。

  可以修改角色控制器的 Height 和 Radius 参数来适配角色模型的网格,对于人形的角色一般推荐为 2m 左右。如果控制器的中心点不在人物中心,可修改胶囊的 Center 参数对其中心点进行调整,Step Offset 参数也会对此产生影响,所以一般保证此值在 0.1 ~ 0.4 之间(以 2m 的人物角色为基准)。同时 Slope Limit 参数值不要设定过小,通常设为 90 最好,此外,介于胶囊体形状的缘故,人物角色是无法爬墙的。

  角色控制器的 Skin Width 是非常重要的属性,因此必须要正确地设定。如果角色卡住了通常是由于 Skin Width 值设得太小而导致的,该值可使其他的对象轻微地穿过角色控制器,并且可以避免抖动且防止角色卡住。Skin Width 最好设置为大于 0.01 并且大于 Radius x 10% 的值。Min Move Distance 的值推荐设为 0。

如果角色频繁地被卡住,尝试调整 Skin With 的值。通过编写脚本,角色控制器可通过物理效果来影响其他的对象。角色控制器无法通过物理效果被其他游戏对象所影响。