網(wǎng)格碰撞體 (Mesh Collider) 網(wǎng)格碰撞體 (Mesh Collider) 采用網(wǎng)格資源 (Mesh Asset) 并基于該網(wǎng)格構(gòu)建其碰撞體 (Collider)。對(duì)于碰撞檢測(cè),這比將基元用于復(fù)雜網(wǎng)格要精確得多。標(biāo)記為 凸體 (Convex) 的網(wǎng)格碰撞體 (Mesh Collider)可以與其他網(wǎng)格碰撞體 (Mesh Collider) 碰撞。 在水平幾何結(jié)構(gòu)上使用的網(wǎng)格碰撞體 (Mesh Collider) 屬性
詳細(xì)信息 網(wǎng)格碰撞體 (Mesh Collider) 通過(guò)附加到游戲?qū)ο?(GameObject) 的網(wǎng)格 (Mesh) 構(gòu)建其碰撞表示形式,并讀取附加的變換的屬性以設(shè)置其位置并正確縮放。 碰撞網(wǎng)格使用背面剔除。如果對(duì)象與將以圖形方式背面剔除的網(wǎng)格碰撞,則也不會(huì)以物理方式與它碰撞。 使用網(wǎng)格碰撞體 (Mesh Collider) 時(shí)有一些限制。通常,兩個(gè)網(wǎng)格碰撞體 (Mesh Collider) 不能相互碰撞。所有網(wǎng)格碰撞體 (Mesh Collider) 都可以與任何基元碰撞體 (Collider) 碰撞。如果某個(gè)網(wǎng)格標(biāo)記為 凸體 (Convex),則它可以與其他網(wǎng)格碰撞體 (Mesh Collider) 碰撞。 碰撞體 (Collider) 與剛體 (Rigidbody) 結(jié)合使用可使 Unity 中的物理變得生動(dòng)。剛體 (Rigidbody) 使對(duì)象可以受物理控制,而碰撞體 (Collider) 使對(duì)象可以相互碰撞。碰撞體 (Collider) 必須獨(dú)立于剛體 (Rigidbody) 添加到對(duì)象。碰撞體 (Collider) 并不一定需要附加剛體 (Rigidbody),但是必須剛體 (Rigidbody) 才能使對(duì)象由于碰撞而移動(dòng)。 當(dāng)兩個(gè)碰撞體 (Collider) 之間發(fā)生碰撞時(shí)并且如果其中至少一個(gè)附加了剛體 (Rigidbody),會(huì)將三條碰撞消息向外發(fā)送給附加到它們的對(duì)象。這些事件可以在腳本中進(jìn)行處理,使您可以在使用或不使用內(nèi)置 NVIDIA PhysX 引擎的情況下創(chuàng)建獨(dú)特行為。 觸發(fā)器 (Trigger) 使用碰撞體 (Collider) 的備選方法是將其作為觸發(fā)器 (Trigger),只需在檢視視圖 (Inspector) 中選中“為觸發(fā)器”(IsTrigger) 屬性復(fù)選框即可。觸發(fā)器 (Trigger) 實(shí)際上會(huì)被物理引擎忽略,并具有一組獨(dú)有的三條觸發(fā)器 (Trigger) 消息,這些消息會(huì)在與觸發(fā)器 (Trigger) 發(fā)生碰撞時(shí)向外發(fā)送。觸發(fā)器 (Trigger) 可用于觸發(fā)游戲中的其他事件,如劇情畫面、自動(dòng)門打開(kāi)、顯示輔導(dǎo)消息等。請(qǐng)充分發(fā)揮您的想象力! 請(qǐng)注意,要使兩個(gè)觸發(fā)器 (Trigger) 在碰撞時(shí)向外發(fā)送觸發(fā)器 (Trigger) 事件,其中之一必須還包括剛體 (Rigidbody)。要使觸發(fā)器 (Trigger) 與普通碰撞體 (Collider) 碰撞,則其中之一必須附加剛體 (Rigidbody)。有關(guān)不同類型碰撞的詳細(xì)圖表,請(qǐng)參閱下面“高級(jí)”部分中的碰撞動(dòng)作矩陣。 摩擦力和彈力 摩擦力、彈力和柔軟度在物理材質(zhì) (Physisc Material) 中定義。標(biāo)準(zhǔn)資源 (Standard Asset) 包含最常見(jiàn)的物理材質(zhì) (Physisc Material)。要使用其中之一,請(qǐng)單擊“物理材質(zhì)”(Physisc Material) 下拉菜單并選擇一個(gè),例如“冰”(Ice)。還可以創(chuàng)建自己的物理材質(zhì) (Physisc Material) 并調(diào)整所有摩擦力值。 提示
高級(jí) 碰撞體 (Collider) 組合 在 Unity 中可以進(jìn)行許多不同的碰撞體 (Collider) 組合。每個(gè)游戲都是獨(dú)一無(wú)二的,不同組合可能更適合于不同類型的游戲。如果在游戲中使用物理,則了解不同基本碰撞體 (Collider) 類型、其常見(jiàn)用途以及與其他類型對(duì)象的交互方式會(huì)十分有幫助。 靜態(tài)碰撞體 (Static Collider) 這些是未附加剛體 (Rigidbody)、但的確附加了碰撞體 (Collider) 的游戲?qū)ο?(GameObject)。這些對(duì)象應(yīng)保持靜態(tài),或很少移動(dòng)。這些十分適用于環(huán)境幾何結(jié)構(gòu)。它們?cè)趧傮w (Rigidbody) 與之碰撞時(shí)不會(huì)移動(dòng)。 剛體碰撞體 (Rigidbody Collider) 這些游戲?qū)ο?(GameObject) 同時(shí)包含剛體 (Rigidbody) 和碰撞體 (Collider)。它們通過(guò)腳本編寫的力和碰撞,完全受物理引擎影響。它們可以與僅包含碰撞體 (Collider) 的游戲?qū)ο?(GameObject) 碰撞。這些很可能是使用物理的游戲中的主要碰撞體 (Collider) 類型。 運(yùn)動(dòng)學(xué)剛體碰撞體 (Kinematic Rigidbody Collider) 此游戲?qū)ο?(GameObject) 包含碰撞體 (Collider) 和標(biāo)記有“為運(yùn)動(dòng)學(xué)”(IsKinematic) 的剛體 (Rigidbody)。要移動(dòng)此游戲?qū)ο?(GameObject),請(qǐng)修改其 變換組件 (Component),而不是應(yīng)用力。它們類似于靜態(tài)碰撞體 (Static Collider),但是更適合于要經(jīng)常四處移動(dòng)碰撞體 (Collider) 的情況。有一些使用此游戲?qū)ο?(GameObject) 的其他專業(yè)方案。 此對(duì)象可以用于通常希望靜態(tài)碰撞體 (Static Collider) 發(fā)送觸發(fā)器 (Trigger) 事件的情況。因?yàn)橛|發(fā)器 (Trigger) 必須附加剛體 (Rigidbody),所以應(yīng)添加剛體 (Rigidbody),然后啟用“為運(yùn)動(dòng)學(xué)”(IsKinematic)。這可防止對(duì)象脫離物理影響,并使您可以在需要時(shí)接收觸發(fā)器 (Trigger) 事件。 運(yùn)動(dòng)學(xué)剛體 (Kinematic Rigidbody) 可以方便地打開(kāi)和關(guān)閉。這適合于在以下情況中創(chuàng)建布娃娃:通常希望角色跟隨在動(dòng)畫之后,然后在發(fā)生碰撞時(shí)(通過(guò)爆炸或所選的任何其他事物進(jìn)行提示)變?yōu)椴纪尥?。發(fā)生這種情況時(shí),只需通過(guò)腳本將所有運(yùn)動(dòng)學(xué)剛體 (Kinematic Rigidbody) 轉(zhuǎn)變?yōu)槠胀▌傮w (Rigidbody)。 如果讓剛體 (Rigidbody) 靜止下來(lái)以便在一段時(shí)間內(nèi)不移動(dòng),它們會(huì)“入睡”。即,它們?cè)谖锢砀逻^(guò)程中不會(huì)進(jìn)行計(jì)算,因?yàn)樗鼈儾粫?huì)前往任何位置。如果將運(yùn)動(dòng)學(xué)剛體 (Kinematic Rigidbody) 從休眠的普通剛體 (Rigidbody) 下邊移走,則休眠的剛體 (Rigidbody) 將被喚醒并在物理更新中重新準(zhǔn)確計(jì)算。因此如果您具有許多要四處移動(dòng)的靜態(tài)碰撞體 (Static Collider) 并且讓不同對(duì)象正確落到其上,請(qǐng)使用運(yùn)動(dòng)學(xué)剛體碰撞體 (Kinematic Rigidbody Collider)。 碰撞動(dòng)作矩陣 根據(jù)兩個(gè)碰撞對(duì)象的配置,可能發(fā)生一些不同動(dòng)作。下圖概述了可以基于附加到其的組件 (Component) 對(duì)兩個(gè)碰撞對(duì)象進(jìn)行的預(yù)計(jì)。一些組合僅導(dǎo)致兩個(gè)對(duì)象之一受碰撞影響,因此請(qǐng)記住標(biāo)準(zhǔn)規(guī)則 - 物理不會(huì)應(yīng)用于未附加剛體 (Rigidbody) 的對(duì)象。
基于層的碰撞檢測(cè) 在 Unity 3.x 中,我們引入了某個(gè)稱為基于層的碰撞檢測(cè) (Layer-Based Collision Detection) 的功能,現(xiàn)在可以有選擇性地告知 Unity 游戲?qū)ο?(GameObject) 與它們附加到的特定層碰撞。有關(guān)更多信息,請(qǐng)單擊此處 |
|