找回密碼
 注冊帳號

掃一掃,訪問微社區

角色控制器(charactercontroller)

2015-1-6 07:51| 發布者: 楊炎| 查看: 5183| 評論: 0|原作者: 蠻牛|來自: unity3d腳本manual

摘要: 角色控制器 (character controller)角色控制器 (character controller)主要用于不使用剛體 (rigidbody)物理的第三人稱或第一人稱玩家控制。角色控制器 (character controller)屬性屬性:功能:高度 (height)角色的膠 ...

角色控制器" target="_blank" class="relatedlink">角色控制器 (character controller)

角色控制器 (character controller)主要用于不使用剛體 (rigidbody)物理第三人稱第一人稱玩家控制。

角色控制器 (character controller)

屬性

屬性:

功能:

高度 (height)

角色的膠囊碰撞體 (capsule collider)高度。更改此項會同時在正方向和負方向上沿 y 軸縮放碰撞體 (collider)。

半徑 (radius)

膠囊碰撞體 (capsule collider) 半徑長度。這本質上是碰撞體 (collider) 寬度。

斜坡限制 (slope limit)

將碰撞體 (collider) 限制為僅爬上等于或小于指示值的斜坡。

臺階偏移 (step offset)

僅當階梯比指示值更接近地面時,角色才會走上階梯。

最小移動距離 (min move distance)

如果角色嘗試移動的距離小于指示值,則它完全不移動。這可以用于減少抖動。在大多數情況下,此值應保留為 0。

皮膚寬度 (skin width)

兩個碰撞體 (collider) 可以互相穿透的深度為其“皮膚寬度”(skin width)。較大“皮膚寬度”(skin width) 可減少抖動。較小“皮膚寬度”(skin width) 可能導致角色卡住。良好設置是使此值為“半徑”(radius) 的 10%。

中心 (center)

這會使膠囊碰撞體 (capsule collider) 在世界坐標空間中偏移,不會影響角色旋轉方式。

詳細信息

傳統 doom 樣式第一人稱控制在物理上不現實。角色每小時奔跑 90 英里,立即停止并在極小空間中轉彎。因為它如此不現實,所以使用剛體 (rigidbody) 和物理創建此行為不切實際且感覺不正常。解決方案是專業的角色控制器 (character controller)。它僅僅是從腳本獲知在某個方向上移動的膠囊形碰撞體 (collider)。該控制器隨后執行移動,但是受碰撞約束。它會沿墻滑動、走上階梯(如果低于臺階偏移 (step offset))并走上處于坡限制 (slope limit)內的斜坡。

該控制器自己不對力作出反應,不會自動推走剛體 (rigidbody)。

如果要使用角色控制器 (character controller) 推動剛體 (rigidbody) 或對象,則可以使用腳本通過oncontrollercolliderhit()函數對任何與之碰撞的對象應用力。

另一方面,如果希望玩家角色受物理影響,則使用剛體 (rigidbody)會比角色控制器 (character controller) 更好。

微調角色

可以修改高度 (height)半徑 (radius)以適合角色的網格。建議始終將大約 2 米用于類人角色。如果旋轉點未處于角色的準確中心處,則還可以修改膠囊的中心 (center)。 of the capsule in case your pivot point is not at the exact center of the character.

臺階偏移 (step offset)也可以影響這一點,請確保此值對于 2 米大小人體介于 0.1 與 0.4 之間。

斜坡限制 (slope limit)不應太小。通常最適合使用 90 度的值。角色控制器 (character controller) 將由于膠囊形狀而無法爬上墻。

不卡住

皮膚寬度 (skin width)是在調整角色控制器 (character controller) 時要正確設置的最關鍵屬性之一。如果角色卡住,則很可能是因為皮膚寬度 (skin width)太小。皮膚寬度 (skin width)會使對象稍微穿透控制器,但是可消除抖動并防止其卡住。.

皮膚寬度 (skin width)保持為至少大于 0.01 且大于半徑 (radius)的 10% 是個好做法。

建議將最小移動距離 (min move distance)保持為 0。

請參閱此處的角色控制器 (character controller) 腳本參考

可以從我們網站的資源區域下載演示預設動畫且移動的角色控制器 (character controller) 的示例工程。

提示

如果發現角色經常卡住,請嘗試調整皮膚寬度 (skin width)

如果編寫自己的腳本,則角色控制器 (character controller) 可以使用物理影響對象。

對象不能通過物理影響角色控制器 (character controller)。

請注意,在檢視器 (inspector) 中更改角色控制器 (character controller) 屬性會在場景中重新創建控制器,因此任何現有觸發器 (trigger) 接觸都會丟失,在控制器再次移動之前將不會收到任何 ontriggerentered 消息。

相關閱讀

文章點評
相關文章
女校游泳队彩金