Unity3D圣典学习【2】之CharacterController

来源:互联网 发布:淘宝助理5.6.9 编辑:程序博客网 时间:2024/05/02 00:26

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



0 0
原创粉丝点击