分類:Unity、C#、VS2015 ide
建立日期:2016-05-02 性能
第三人稱視角控制器涉及的相關概念有: 動畫
一、剛體(Rigidbody)。 對象
二、碰撞體(Collider)。包括球體碰撞體(Sphere Collider)、箱體碰撞體(Box Collider)、網格碰撞體(Mesh Collider)、物理材質(Physics Material)、鉸鏈關節(Hinge Joint)、彈簧關節(Spring Joint)等。 遊戲
Unity內置了 NVIDIA PhysX 物理引擎。要控制場景中的物理對象,只需對該對象添加剛體 (Rigidbody)。執行此操做後,該對象就會受重力的影響,並且還能夠將該對象與世界座標系中的其餘對象進行碰撞檢測。 it
一、剛體 im
剛體 (Rigidbody) 是以物理方式模擬的對象。可將剛體 (Rigidbody) 用於玩家能夠四處推進的事物(例如板條箱或鬆散對象),或經過編寫腳本向剛體 (Rigidbody) 應用力來直接移動它。 腳本
若是對非運動學剛體 (non-Kinematic Rigidbody) 進行變換,則可能不會與其餘對象正確碰撞,所以應經過對剛體 (Rigidbody) 應用力和扭矩來移動它。另外,還能夠向剛體 (Rigidbody) 添加關節 (Joint) 以使行爲更復雜。例如,能夠建立具備物理門,或建立具備搖擺鏈條的起重機等。 db
還可以使用剛體 (Rigidbody) 使車輛顯得生動,例如能夠用一個剛體、四個車輪碰撞體 (Wheel Collider) 以及一個基於用戶輸入應用車輪旋轉力的腳原本建立汽車。 移動
能夠經過從腳本向剛體 (Rigidbody) 應用力來建立飛機。
剛體 (Rigidbody) 最常與基元碰撞體 (Primitive Collider) 結合使用。
重要提示:
二、運動學剛體 (Kinematic Rigidbody)
運動學剛體 (Kinematic Rigidbody) 是指啓用了「運動學」(is Kinematic) 選項的剛體。運動學剛體 (Kinematic Rigidbody) 不受力、重力或碰撞的影響。它們經過設置變換的位置和旋轉或對其進行動畫處理來驅動,運動學剛體還能夠與其餘非運動學剛體 (non-Kinematic Rigidbody) 進行交互。
運動學剛體 (Kinematic Rigidbody) 可在與其餘剛體 (Rigidbody) 碰撞時正確喚醒它們,並會對置於其上的剛體 (Rigidbody) 應用摩擦力。
下面是針對運動學剛體 (Kinematic Rigidbody) 的幾個使用狀況的示例:
(1)但願某個對象處於物理控制下,可是其餘狀況下則是經過腳本或動畫進行控制。例如,能夠建立一個動畫角色,其骨骼附加了與關節 (Joint) 鏈接的剛體 (Rigidbody),以用做布娃娃。大多數時候該角色處於動畫控制下,此時會建立運動學剛體 (Kinematic Rigidbody)。可是當命中它時,又但願它變爲布娃娃並受物理影響。爲實現此目的,只需禁用「運動學」選項,即讓「is Kinematic」爲false便可。
(2)須要某個對象能夠推進其餘對象、但不推進本身移動的對象。例如,若是有一個動畫平臺,而且要在其上放置一些剛體 (Rigidbody) 箱體,則應使該平臺成爲運動學剛體 (Kinematic Rigidbody) 而不只僅是不帶剛體 (Rigidbody) 的碰撞器 (Collider)。
(3)可能須要某個對象有一個通過動畫處理的運動學剛體 (Kinematic Rigidbody),並使用一個可用的關節 (Joint) 讓真實剛體 (Rigidbody) 跟隨其後。
三、靜態碰撞組件 (Static Collider)
靜態碰撞組件 (Static Collider)是具備碰撞體 (Collider) 而不是剛體 (Rigidbody) 的遊戲對象 (GameObject)。靜態碰撞體 (Static Collider) 用於始終保持在相同的位置而且永遠不會四處移動的水平幾何結構。
既能夠將網格碰撞組件 (Mesh Collider) 添加到已存在的圖形網格,例如使用導入設置 (Import Settings) 生成碰撞體 (Generate Colliders),也可使用其餘碰撞組件。
毫不應逐幀移動靜態碰撞體 (Static Collider),或者說,只要將其設置爲靜態碰撞體,它就應該從始至終都不會在場景中移動。不然就會致使物理引擎從新進行內部計算,這種計算成本十分高昂,還會使性能顯著降低。不只如此,基於靜態碰撞體 (Static Collider) 喚醒其餘剛體 (Rigidbody) 的行爲未定義,而且移動靜態碰撞體 (Static Collider) 不會對與之接觸的剛體 (Rigidbody) 應用摩擦力。
總之,凡是在場景中移動的碰撞體 (Collider) ,都應該始終將其設置爲運動學剛體 (Kinematic Rigidbody),而不是將其設置爲靜態碰撞體。