1、属性
1)、Slope Limit:坡度限制,限制碰撞器爬坡的倾斜值
2)、Step Offset:台阶高度,角色可以迈上的最高台阶高度
3)、Skin Width:皮肤厚度,决定两个碰撞器可以互相渗入的深度,较大的皮肤厚度值会导致颤抖,小的皮肤厚度值会导致角色被卡住,合理的设定值为半径(Radius)的10%
4)、Min Move Distance:最小移动距离,如果角色移动的距离小于该值,角色就不会移动,这样可以避免抖动现象,大部分值情况下被设置为0
5)、Center:中心点,该值决定碰撞器在世界空间的位置,并不影响角色的行动
6)、Radius:半径,碰撞器的半径
7)、Height:高度,角色的胶囊碰撞体高度,改变值会使碰撞器在Y轴方向伸缩
Step Offset属性也影响角色,确保对于一个2米大小的人来说,该值介于0.1到0.4之间。
Slope Limit不能设的太小,一般使用90度会比较合适,由于是胶囊提,角色控制器不会爬上墙
Skin Width如果角色被卡住了,那最有可能就是因为该值设的太小。该值至少要大于0.01,并且大于Radius的10%。
Min Move Distance推荐设置为0
2、刚体碰撞
控制器不会加在它身上的力做出反应,也不会自动推开其他刚体,如果想让角色控制器推开其他刚体或者对象,你可以在对象附加的脚本中添加OnControllerColliderHit()函数。
如果让角色被物理效果影响,那就最好使用刚体而不是角色控制器
3、变量
1)isGrounded:最后一次移动角色控制器是否触碰地面
2)velocity:角色当前的相对速度
3)collisionFlags:在最后的CharacterController.Move调用期间,胶囊体的哪个部分与周围环境碰撞
4)detectCollisions:其它的刚体和角色控制器是否能够与本角色控制器相碰撞,默认值为enabled
4、函数
1)SimpleMove:以一定的速度移动角色
2)Move:一个更加复杂的移动函数,每次都绝对移动
5、发送消息
OnControllerColliderHit:控制碰撞器碰撞,当控制碰撞器碰撞一个正在运动的碰撞器时,OnControllerColliderHit被调用
6、继承成员
1)enabled:启动碰撞器将会碰撞其它碰撞器,禁用碰撞器就不会碰撞其它碰撞器
2)attachedRigidbody:碰撞器附加的刚体
3)isTrigger:碰撞器是一个触发器
4)material:碰撞器使用的材质
5)sharedMaterial:碰撞器的共享物理材质
6)bounds:碰撞器在世界坐标空间的边界框
7)constantForce:恒力附加
8)renderer:渲染附加
9)audio:音频附加
10)guiText:GUIText附加,界面文本
11)networkView:NetworkView附加,网络视图
12)guiTexture:GUITexture附加,界面纹理
13)collider:Collider附加
14)hingeJoint:HingeJoint附加,铰链关节附加
15)particleEmitter:粒子发射器附加,ParticleEmitter
16)hideFlags:物体是否被隐藏,保存在场景中或被用户修改
7、继承函数
1)ClosestPointOnBounds:附加碰撞器的边界框附近的点
2)Raycast:投射一个光线,它忽略所有碰撞器
8、发送消息
1)OnTriggerEnter:当碰撞器进入触发器时调用
2)OnTriggerExit:当碰撞器停止触动触发器时,调用
3)OnTriggerStay:每个碰撞器触动触发器,几乎在所有的帧OnTriggerStay调用
4)OnCollisionEnter:当collider/rigidbody开始触动rigidbody/collider,调用OnCollisionEnter
5)OnCollisionExit:collider/rigidbody停止触动rigidbody/collider,将在每帧调用OnCollisionExit
6)OnCollisionStay:每个collider/rigidbody触动rigidbody/collider,将在每帧调用OnCollisionStay