【Unity】11.1 角色控制器 (Character Controller)


分類:Unity、C#、VS2015

創建日期:2016-05-02

一、簡介

角色控制器(Character Controller)主要用於對第三人稱或第一人稱游戲主角的控制。如果要創建類人角色,可使用角色控制器 (Character Controller)。這可以是第三人稱游戲 (Third Person Platformer) 中的主角色、FPS 射擊者或任何敵人角色。

二、基本概念

第三人稱游戲中的這些控制器由於無規律可循,所以無法遵守固定的物理規則,例如,讓某輛車每小時跑 90 英里,但是它可能會突然停止然后在極小的空間中轉彎。此時,就需要由角色控制器 (Character Controller) 進行碰撞檢測以確保角色可以沿牆滑動、走上和走下階梯等。

角色控制器 (Character Controller) 既可以受力的影響,也可以不受力的影響。比如,可以通過腳本對剛體 (Rigidbody) 應用力來推動它們。通常,所有類人角色都使用角色控制器 (Character Controller) 來實現。

角色控制器 (Character Controller) 本質上是非物理性的,如果要將真實物理現象應用於角色,比如在繩索上搖擺、由大岩石推動,則必須使用剛體 (Rigidbody),這樣才能對角色使用關節 (Joint) 和力。

角色控制器 (Character Controller) 始終沿 Y 軸對齊,因此如果角色需要能夠在空間中改變方向(例如在變化的重力下),則也需要使用剛體 (Rigidbody)。但是要注意,很難將剛體 (Rigidbody) 調整為使角色感覺正常,因為游戲角色的預期行為方式是非物理性質的。另一個差異在於,角色控制器 (Character Controller) 可以平穩地滑過指定高度的台階,而剛體 (Rigidbody) 則不能。

如果使剛體 (Rigidbody) 成為角色控制器 (Character Controller) 的父級,則該角色就會獲得類似於“關節”(Joint) 的行為。

與角色控制器相關的概念有:

1、剛體(Rigidbody)。

2、碰撞體(Collider)。包括球體碰撞體(Sphere Collider)、箱體碰撞體(Box Collider)、網格碰撞體(Mesh Collider)、物理材質(Physics Material)、鉸鏈關節(Hinge Joint)、彈簧關節(Spring Joint)等。

3、恆定力 (Constant Force)。

三、添加角色控制器的辦法

有兩種方式:

一種是添加Unity自帶的角色控制器,直接將其拖放到游戲對象上即可。

另一種是添加你自己定義的角色控制器,辦法為:選中要控制的角色對象-->【Component】-->【Physics】-->【Character Controller】,這樣即可為該對象添加自定義的角色控制器組件。

四、相關屬性

1、Slope Limit

坡度限制。該項用於設置所控制的角色對象只能爬上小於或等於該參數值的斜坡。

2、StepOoffset

台階高度。該項用於設置所控制的角色對象可以邁上的最高台階的高度。

3、Skin Width

皮膚厚度。該參數決定了兩個碰撞體可以相互滲入的深度,較大的參數值會產生抖動的現象,較小的參數值會導致所控制的游戲對象被卡住,較為台理的設定是:該參數值為Radius值的10%。

4、Min Move Distance

最小移動距離。如果所控制的角色對象的移動距離小於該值,則游戲對象將不會移動,這可以避免抖動,大多數情況下將該值設為0。

5、Center

中心。該參數決定了膠囊碰撞體在世界坐標中的位置,並不影響所控制的角色對象的中心坐標。

6、Radius

半徑。膠囊碰撞體的長度半徑,同時該項也決定了碰撞體的寬度。

7、Height

高度。該頂用於設置所控制的角色對象的膠囊碰撞體的高度,改變此值將會使碰撞體沿着Y軸的正負兩個方向同時伸縮。

五、注意事項

角色控制器不會對施加給它的作用力作出反應,也不會作用於真他的剛體。如果想讓角色控制器能夠作用於其他的剛體對象,可以通過腳本OnControllerColliderHit()函數在與其相碰撞的對象上使用—個作用力。另外,如果想讓角色控制器受物理效果影響,那就最好用剛體來代替它。

1、Height、Radius、Step Offset等參數

可以修改角色控制器的Height和Radius參數來適配角色模型的網格,對於人形的角色一般推薦為2m左右。如果控制器的中心點不在人物中心,可修改膠囊的Center參數對其中心點進行調整,Step Offset參數也會對此產生影響,所以一般保證此值在0.1~04之間(以2m的人物角色為基准)。同時slope Limit參數值不要設定過小,通常設為90最好,此外,介於膠囊體形狀的緣故,人物角色是無法爬上牆的。

2、Skin Width的設定

角色控制器的【Skin Width】是非常重要的屬性,因此必須要正確地設定它。如果角色卡住了,通常是由於Skin Wdth值設得太小而導致的,該值可使其他的對象輕微地穿過角色控制器,並且可以避免抖動且防止角色卡住。

【Skin Width】最好設置為大於0.01並且大於Radius×10%的值。【Min Move Distance】的值推薦設為0。

3、技巧

如果角色頻繁地被卡住,嘗試調整【Skin Width】的值。

通過編寫腳本,角色控制器可通過物理效果來影響其他的對象。但是,角色控制器無法通過物理效果被其他游戲對象所影響。

OK,了解了角色控制器(特別是類人角色控制器)的這些基礎知識,你就知道為什么要介紹本章后續節的內容了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM