【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,瞭解了角色控制器(特別是類人角色控制器)的這些基礎知識,你就知道爲何要介紹本章後續節的內容了。

相關文章
相關標籤/搜索