Unity3D聖典學習【2】之CharacterController
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