Unity物(wù)理(lǐ)引擎篇——剛體

simaoshid1 2018-06-22

我們在unity裏面建了(le)一個(gè)正方體cube , 要如何使這(zhè)個(gè)cube可(kě)以跟現實中的(de)物(wù)體一樣受重力呢(ne) ? 這(zhè)就需要用(yòng)到Rigidbody(剛體)組件了(le) .

單擊cube , 在右邊的(de)Inspector面闆添加Rigidbody組件

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

添加完Rigidbody組件後,cube1就可(kě)以受重力影(yǐng)響了(le),運行unity時(shí),cube1會因爲受到重力往下(xià)落.

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

下(xià)面爲大(dà)家介紹 Rigidbody 組件常用(yòng)參數 :

1. Mass : 物(wù)體的(de)質量 . 官方建議(yì)物(wù)體質量***好不要大(dà)于其他(tā)物(wù)體的(de)100倍或者小于其他(tā)物(wù)體的(de) 1/100 ;

2. Drag : 空氣阻力 . 數值越大(dà),表示物(wù)體所受阻力越大(dà),物(wù)體越難移動 ;

3. Angular Drag : 角阻力,也(yě)就是物(wù)體旋轉受到的(de)阻力 ,數值越大(dà)物(wù)體越難旋轉 ;

4. Use Gravity : 是否開啓重力 , 開啓的(de)話(huà),遊戲物(wù)體會受重力影(yǐng)響 ;

5. Is Kinematic : 是否開啓動力學 . 如果開啓的(de)話(huà) , 遊戲物(wù)體将不再受物(wù)理(lǐ)引擎的(de)影(yǐng)響 , 隻能通(tōng)過 Transform 來(lái)改變物(wù)體的(de)位置,旋轉等 ;

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

如圖 cube1(紅色 , 勾選了(le) Is Kinematic ) , cube2 (綠色 , 沒勾選 Is Kinematic ) 原本處于同一高(gāo)度, 運行狀态下(xià) , cube2由于沒有勾選 Is Kinematic 選項 , 受到重力影(yǐng)響會下(xià)落 ;

6. Interpolate : 插值 . 用(yòng)來(lái)控制剛體運動的(de)抖動情況 , 因爲物(wù)理(lǐ)運算(suàn)和(hé)畫(huà)面更新不同步造成的(de). Interpolate是枚舉類型 , 有以下(xià)三個(gè)選項 .

(1) . None : 沒有插值

(2) . Interpolate : 内插值 . 基于前一幀的(de) Transform 來(lái)平滑此次的(de) Transform

(3) . Extrapolate : 外插值 . 基于下(xià)一幀的(de) Transform 來(lái)平滑此次的(de) Transform

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

如圖 cube1 (None) , cube2 (Interpolate) , cube3 (Extrapolate) .

遊戲運行時(shí) :

cube1 : 出現抖動 ;

cube2 : 平滑落下(xià) , 但是比 cube1 後落地;

cube3 : 平滑落下(xià) , 但和(hé) cube1 同時(shí)落地;

由此可(kě)以看出 , Interpolate 和(hé) Extrapolate 的(de)區(qū)别就在于使用(yòng)的(de)算(suàn)法不一樣 , Extrapolate在物(wù)理(lǐ)上會比較準确 ;

7. Collision Detection : 碰撞檢測 . 用(yòng)于控制避免高(gāo)速運動的(de)物(wù)體穿過其他(tā)的(de)物(wù)體而并沒有發生碰撞 , 也(yě)是一個(gè)枚舉類型 , 有以下(xià)三個(gè)選項

(1) . Discrete : 離散碰撞檢測 . 與場(chǎng)景中其他(tā)所有的(de)碰撞體進行碰撞檢測 , 爲默認值 ;

(2) . Continuous : 連續碰撞檢測 . 适用(yòng)于需要與連續動态碰撞檢測的(de)對(duì)象相碰撞的(de)對(duì)象. 很耗費性能 ,一般不用(yòng) ;

(3) . Continuous Dynamic : 連續動态碰撞檢測 . 适用(yòng)于檢測快(kuài)速運動的(de)遊戲對(duì)象 ;

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

如圖 cube1 (Discrete) , cube2 (Continuous) , cube3 (Continuous Dynamic) 置于 1000米的(de)高(gāo)度 .

遊戲運行時(shí) :

cube1 : 高(gāo)速下(xià)落 , 穿過地面 ;

cube2 : 落在地面靜止 ;

cube3 : 落在地面靜止 ;

由此看出 : cube1 在高(gāo)速運動時(shí)已經完全穿透 , cube2防止穿透靜态對(duì)象 , cube3 防止穿透包含 Continuous 和(hé) Continuous Dynamic 選項的(de)物(wù)體 .

8. Constraints : 約束 . 用(yòng)來(lái)凍結物(wù)體 x ,y ,z 軸的(de)移動和(hé)旋轉 .

Unity物(wù)理(lǐ)引擎篇——剛體


請點擊輸入圖片描述

(1) . Freeze Position : 凍結位置 . x , y , z 軸方向上 , 勾選狀态的(de)話(huà) , 在該軸上的(de)移動無效 ;

(2) . Freeze Rotation : 凍結旋轉 . x , y , z 軸方向上 , 勾選狀态的(de)話(huà) , 在該軸上的(de)旋轉無效 ;

好了(le) , 今天的(de)剛體組件就介紹到這(zhè)裏 ,大(dà)家有什(shén)麽問題可(kě)以在評論區(qū)留言 , 我會爲大(dà)家解答(dá) .

遊戲物(wù)體添加了(le)剛體組件以後 , 就可(kě)以模拟碰撞了(le)嗎 ? 答(dá)案是 No ... , 兩個(gè)或多(duō)個(gè)遊戲物(wù)體發生碰撞,隻靠剛體是不夠的(de) , 明(míng)天爲大(dà)家帶來(lái)另一個(gè)不可(kě)獲取的(de)組件詳解 .


發表評論

發表評論:

17601037727 1280857492