Unity 第11章 第三人稱角色控制器和碰撞體

2022-09-15 03:00:10 字數 2317 閱讀 4795

分類:unity、c#、vs2015

建立日期:2016-05-02

一、簡介

1、剛體(rigidbody)。

2、碰撞體(collider)。包括球體碰撞體(sphere collider)、箱體碰撞體(box collider)、網格碰撞體(mesh collider)、物理材質(physics material)、鉸鏈關節(hinge joint)、彈簧關節(spring joint)等。

unity內建了 nvidia physx 物理引擎。要控制場景中的物理物件,只需對該物件新增剛體 (rigidbody)。執行此操作後,該物件就會受重力的影響,而且還可以將該物件與世界座標系中的其他物件進行碰撞檢測。

二、本章要點

1、剛體

剛體 (rigidbody) 是以物理方式模擬的物件。可將剛體 (rigidbody) 用於玩家可以四處推動的事物(例如板條箱或鬆散物件),或通過編寫指令碼向剛體 (rigidbody) 應用力來直接移動它。

如果對非運動學剛體 (non-kinematic rigidbody) 進行變換,則可能不會與其他物件正確碰撞,因此應通過對剛體 (rigidbody) 應用力和扭矩來移動它。另外,還可以向剛體 (rigidbody) 新增關節 (joint) 以使行為更複雜。例如,可以建立具有物理門,或建立具有搖擺鏈條的起重機等。

還可使用剛體 (rigidbody) 使車輛顯得生動,例如可以用乙個剛體、四個車輪碰撞體 (wheel collider) 以及乙個基於使用者輸入應用車輪旋轉力的指令碼來建立汽車。

可以通過從指令碼向剛體 (rigidbody) 應用力來建立飛機。

剛體 (rigidbody) 最常與基元碰撞體 (primitive collider) 結合使用。

2、運動學剛體 (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) 跟隨其後。

3、靜態碰撞元件 (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),而不是將其設定為靜態碰撞體。

Hololens第三人稱視角實現

其實hololens的第三人稱視角識別很簡單,本質上只要能夠將兩個座標點對齊就行,但是這個兩個不同的應用沒辦法使用同乙個座標系。所以採用ar識別功能達到兩個座標係對其的目的。第乙個就是hololens端使用vuforia進行識別,但是有一點識別圖的物理尺寸要和識別圖大小保持一致,不然深度不對產生的誤...

Unreal 建立第三人稱遊戲模式

我這裡選擇的是vr basic,建立完level可以看到目前該地圖是第一人稱視角,現在要把它改成第三人稱視角 mygamemode 建立系統預設的gamemode類就行 myplayercontroller 建立系統預設的playercontroller類就行 mypawn 這是乙個characte...

虛幻4 學習總結6 第三人稱角色01

很多人在虛幻4.10版本裡面,匯入動畫,模型發現,import 居然是灰的,跟圖上一樣,那是因為我們沒有選擇骨骼,選擇骨骼呢,在mesh下面 圖上第一行 的skeleton上選擇你的骨骼就好,這也就是說,我們匯入帶骨骼的模型的時候,要先把骨骼導進去,否則,其他素材都進不去 人物模型匯入的時候,都採用...