Unity之碰撞體組件


3D物理組件中碰撞體組件添加與設置

碰撞體是物理組件中的一類,3D物理組件和2D物理組件有獨特的碰撞體組件,它要與剛體一起添加到游戲對象上才能觸發碰撞。如果兩個剛體相互撞在一起,除非兩個對象有碰撞體時物理引擎才會計算碰撞,在物理模擬中,沒有碰撞體的剛體會彼此相互穿過。

  在3D物理組件中添加碰撞體的方法:首先選中一個游戲對象,然后依次選擇菜單欄Component→Physics命令,可選擇不同的碰撞體類型,這樣就在該對象上添加了碰撞體組件。

1. Box Collider(盒碰撞體)。

  盒碰撞體是一個立方體外形的基本碰撞體。該碰撞體可以調整為不同大小的長方體,可用作門、牆及平台等,也可用於布娃娃的角色軀干或者汽車等交通工具的外殼,當然最適合用在盒子或箱子上。

  • Edit Collider:編輯碰撞體。單擊按鈕即可在Scene視圖中編輯碰撞體。
  • Is Trigger:觸發器。選中該項,則該碰撞體可用於觸發事件,同時忽略物理碰撞。
  • Material:材質。采用不同的物理材質類型決定了碰撞體與其他對象的交互形式,單擊右側的按鈕可彈出物理材質選擇對話框。
  • Center:中心。碰撞體在對象局部坐標中的位置。
  • Size:大小。碰撞體在X、Y、Z方向上的大小。

 

2. Sphere Collider(球形碰撞體)。

  球形碰撞體是一個基本球體的基本碰撞體。球形碰撞體的三維大小可以均勻地調節,但不能單獨調節某個坐標軸方向的大小,該碰撞體適用於落石、乒乓球等游戲對象。

  • Edit Collider:編輯碰撞體。單擊按鈕即可在Scene視圖中編輯碰撞體。
  • Is Trigger:觸發器。選中該項,則該碰撞體可用於觸發事件,同時忽略物理碰撞。
  • Material:材質。采用不同的物理材質類型決定了碰撞體與其他對象的交互形式,單擊右側的按鈕可彈出物理材質選擇對話框,可為碰撞體選擇一個物理材質。
  • Center:中心。碰撞體在對象局部坐標中的位置。
  • Radius:半徑。球體碰撞體的半徑。

 

3. Capsule Collider(膠囊碰撞體)。

  膠囊碰撞體由一個圓柱體和與其相連的兩個半球體組成,是一個膠囊形狀的基本碰撞體。膠囊碰撞體的半徑和高度都可以單獨調節,可用在角色控制器或與其他不規則形狀的碰撞結合來使用。Unity中的角色控制器通常內嵌了膠囊碰撞體。

  • Edit Collider:編輯碰撞體。單擊按鈕即可在Scene視圖中編輯碰撞體。
  • Is Trigger:觸發器。選中該項,則該碰撞體可用於觸發事件,同時忽略物理碰撞。
  • Material:材質。采用不同的物理材質類型決定了碰撞體與其他對象的交互形式,單擊右側的按鈕可彈出物理材質選擇對話框,可為碰撞體選擇一個物理材質。
  • Center:中心。碰撞體在對象局部坐標中的位置。
  • Radius:半徑。該項用於控制碰撞體半圓的半徑大小。
  • Height:高度。該項用於控制碰撞體中圓柱的高度。
  • Direction:方向。在對象的局部坐標中膠囊的縱向方向所對應的坐標軸,默認是Y軸。

4. Mesh Collider(網格碰撞體)。

  網格碰撞體通過獲取網格對象並在其基礎上構建碰撞,與在復雜網格模型上使用基本碰撞體相比,網格碰撞體要更加精細,但會占用更多的系統資源。開啟Convex參數的網格碰撞體才可以與其他的網格碰撞體發生碰撞。

  • Edit Collider:編輯碰撞體。單擊按鈕即可在Scene視圖中編輯碰撞體。
  • Is Trigger:觸發器。選中該項,則該碰撞體可用於觸發事件,同時忽略物理碰撞。
  • Material:材質。采用不同的物理材質類型決定了碰撞體與其他對象的交互形式,單擊右側的按鈕可彈出物理材質選擇對話框,可為碰撞體選擇一個物理材質。
  • Mesh:網格。獲取游戲對象的網格並將其作為碰撞體。

  網格碰撞體按照所附加對象的Transform組件屬性來設置碰撞體的位置和大小比例。碰撞網格使用背面效應方式,如果一個對象與一個采用背面效應的網格在視覺上相碰撞的話,那么他們並不會在物理上發生碰撞。使用網格碰撞體有一些限制的條件:通常兩個網格碰撞體之間並不會發生碰撞,但所有的網格碰撞體都可與基本碰撞體發生碰撞。如果碰撞體的Convex參數設為開啟,則它也會與其他的網格碰撞體發生碰撞。需要注意的是,只有當網格碰撞體的三角數量少於255時,Convex參數才會生效。

5. Wheel Collider(車輪碰撞體)。

  車輪碰撞體是一種針對地面車輛的特殊碰撞體。它有內置的碰撞檢測、車輪物理系統及有滑胎摩擦的參考體。除了車輪,該碰撞體也可用於其他的游戲對象。

  • Mass:質量。該項用於設置車輪碰撞體的質量。
  • Radius:半徑。該項用於設置車輪碰撞體的半徑。
  • Wheel Damping Rate:車輪的阻尼值。該項用於設置車輪的阻尼率。
  • Suspension Distance:懸掛距離。該項用於設置車輪碰撞體懸掛的最大伸長距離,按照局部坐標來計算。懸掛總是通過其局部坐標的Y軸延伸。
  • Force App Point Distance:力應用點的距離。該項定義車輪力作用點與車輪水平最低點之間的距離。當該參數為0時,車輪力將被應用於沿其父物體Y軸方向Wheel Collider的最低點上,將該點放置略低於車輛質量中心點的位置效果更好。
  • Center:中心。該項用於設置車輪碰撞體在對象局部坐標的中心。
  • Suspension Spring:懸掛彈簧。該項用於設置車輪碰撞體通過添加彈簧和阻尼外力使得懸掛達到目標位置。
    • Spring:彈簧。彈簧力度越大,懸掛到達目的位置也就越快。
    • Damper:阻尼器。阻尼器控制着懸掛的速度,數值越大懸掛彈簧移動速度越慢。
    • Target Position:目標位置。懸掛沿着其方向上靜止時的距離。其值為0時懸掛為完全伸展狀態,值為1時為完全壓縮狀態,默認值為0,這與常規的汽車懸掛狀態相匹配。
  • Forward Friction:向前摩擦力。當輪胎向前滾動時的摩擦力屬性。
    • Extremum Slip:滑動極值。
    • Extremum Value:極限值。
    • Asymptote Slip:滑動漸進值。
    • Asymptote Value:漸進值。
    • Stiffness:剛性因子。極限值與漸進值的乘數(默認為1),剛度變化的摩擦。設置為零時將禁用所有的車輪摩擦。通常在運行時通過腳本修改剛度來模擬各種地面材料。
  • Sideways Friction:側向摩擦力。當輪胎側向滾動時的摩擦力屬性。
    • Extremum Slip:滑動極值。
    • Extremum Value:極限值。
    • Asymptote Slip:滑動漸進值。
    • Asymptote Value:漸進值。
    • Stiffness:剛性因子。極限值與漸進值的乘數(默認為1),剛度變化的摩擦。設置為零時將禁用所有的車輪摩擦。通常在運行時通過腳本修改剛度來模擬各種地面材料。

  車輪的碰撞檢測是通過從局部坐標Y軸向上投射一條射線來實現的。車輪有一個通過懸掛距離向下延伸的半徑,可通過腳本中不同的屬性值來對車輛進行控制。這些屬性值有motorTorque(發動機轉矩)、brakeTorque(制動轉矩)和steerAngle(轉向角)。車輪碰撞體育物理引擎的其余部分相比,是通過一個基於滑動摩擦力的參考體來單獨計算摩擦力的。這會產生更真實的互動行為,但是車輪碰撞體就不受物理材質的影響了。

  ① 車輪碰撞體的設置:不需要通過調轉或滾動待有車輪碰撞體的游戲對象來控制車輛,因為綁定了車輪碰撞體的游戲對象其但相對於汽車而言本身是固定的。然而若要調轉或滾動車輪的話,最好的方法就是將車輪碰撞體和可見的車輪分開來設置。

  ② 碰撞體的幾何結構:由於行駛的車輛具有一定的速度,因此創建合理的賽道碰撞集合體就顯得尤為重要。特別是組成不可見模型的碰撞網格不應當出現小的凹凸不平現象。一般賽道的碰撞網格可以分開來制作,這樣會更加平滑。

 

6、Terrain Collider(地形碰撞器)。

  地形碰撞器是基於地形構建的碰撞體。

  • Material:材質。采用不同的物理材質類型決定了碰撞體與其他對象的交互形式,單擊右側的圓圈按鈕可彈出物理材質選擇對話框,可為碰撞體選擇一個物理材質。
  • Terrain Data:地形數據。采用不同的地形數據決定了地形的外觀,單擊右側的圓圈按鈕可彈出地形數據選擇對話框,可為碰撞體選擇一個地形數據。
  • Enable Tree Collider:開啟樹的碰撞體。若開啟該項,將啟用樹的碰撞體。

 

文章摘自《Unity官方案例精講》


免責聲明!

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



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