1. 程式人生 > >Unity3D聖典學習【2】之CharacterController

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