【Unity】11.1 角色控制器 (Character Controller)

分类:Unity、C#、VS2015 ide

建立日期:2016-05-02 函数

1、简介

角色控制器(Character Controller)主要用于对第三人称或第一人称游戏主角的控制。若是要建立类人角色,可以使用角色控制器 (Character Controller)。这能够是第三人称游戏 (Third Person Platformer) 中的主角色、FPS 射击者或任何敌人角色。 orm

2、基本概念

第三人称游戏中的这些控制器因为无规律可循,因此没法遵照固定的物理规则,例如,让某辆车每小时跑 90 英里,可是它可能会忽然中止而后在极小的空间中转弯。此时,就须要由角色控制器 (Character Controller) 进行碰撞检测以确保角色能够沿墙滑动、走上和走下阶梯等。 对象

角色控制器 (Character Controller) 既能够受力的影响,也能够不受力的影响。好比,能够经过脚本对刚体 (Rigidbody) 应用力来推进它们。一般,全部类人角色都使用角色控制器 (Character Controller) 来实现。 游戏

角色控制器 (Character Controller) 本质上是非物理性的,若是要将真实物理现象应用于角色,好比在绳索上摇摆、由大岩石推进,则必须使用刚体 (Rigidbody),这样才能对角色使用关节 (Joint) 和力。 it

角色控制器 (Character Controller) 始终沿 Y 轴对齐,所以若是角色须要可以在空间中改变方向(例如在变化的重力下),则也须要使用刚体 (Rigidbody)。可是要注意,很难将刚体 (Rigidbody) 调整为使角色感受正常,由于游戏角色的预期行为方式是非物理性质的。另外一个差别在于,角色控制器 (Character Controller) 能够平稳地滑过指定高度的台阶,而刚体 (Rigidbody) 则不能。 form

若是使刚体 (Rigidbody) 成为角色控制器 (Character Controller) 的父级,则该角色就会得到相似于“关节”(Joint) 的行为。 基础

与角色控制器相关的概念有: 技巧

一、刚体(Rigidbody)。 im

二、碰撞体(Collider)。包括球体碰撞体(Sphere Collider)、箱体碰撞体(Box Collider)、网格碰撞体(Mesh Collider)、物理材质(Physics Material)、铰链关节(Hinge Joint)、弹簧关节(Spring Joint)等。

三、恒定力 (Constant Force)。

3、添加角色控制器的办法

有两种方式:

一种是添加Unity自带的角色控制器,直接将其拖放到游戏对象上便可。

另外一种是添加你本身定义的角色控制器,办法为:选中要控制的角色对象-->【Component】-->【Physics】-->【Character Controller】,这样便可为该对象添加自定义的角色控制器组件。

4、相关属性

一、Slope Limit

坡度限制。该项用于设置所控制的角色对象只能爬上小于或等于该参数值的斜坡。

二、StepOoffset

台阶高度。该项用于设置所控制的角色对象能够迈上的最高台阶的高度。

三、Skin Width

皮肤厚度。该参数决定了两个碰撞体能够相互渗入的深度,较大的参数值会产生抖动的现象,较小的参数值会致使所控制的游戏对象被卡住,较为台理的设定是:该参数值为Radius值的10%。

四、Min Move Distance

最小移动距离。若是所控制的角色对象的移动距离小于该值,则游戏对象将不会移动,这能够避免抖动,大多数状况下将该值设为0。

五、Center

中心。该参数决定了胶囊碰撞体在世界坐标中的位置,并不影响所控制的角色对象的中心坐标。

六、Radius

半径。胶囊碰撞体的长度半径,同时该项也决定了碰撞体的宽度。

七、Height

高度。该顶用于设置所控制的角色对象的胶囊碰撞体的高度,改变此值将会使碰撞体沿着Y轴的正负两个方向同时伸缩。

5、注意事项

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

一、Height、Radius、Step Offset等参数

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

二、Skin Width的设定

角色控制器的【Skin Width】是很是重要的属性,所以必需要正确地设定它。若是角色卡住了,一般是因为Skin Wdth值设得过小而致使的,该值可以使其余的对象轻微地穿过角色控制器,而且能够避免抖动且防止角色卡住。

【Skin Width】最好设置为大于0.01而且大于Radius×10%的值。【Min Move Distance】的值推荐设为0。

三、技巧

若是角色频繁地被卡住,尝试调整【Skin Width】的值。

经过编写脚本,角色控制器可经过物理效果来影响其余的对象。可是,角色控制器没法经过物理效果被其余游戏对象所影响。

OK,了解了角色控制器(特别是类人角色控制器)的这些基础知识,你就知道为何要介绍本章后续节的内容了。

相关文章
相关标签/搜索