国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity-碰撞體

2021-10-24 09:50 作者:unity_某某師_高錦錦  | 我要投稿

碰撞體組件可定義用于物理碰撞的游戲?qū)ο蟮男螤?。碰撞體是不可見(jiàn)的,其形狀不需要與游戲?qū)ο蟮木W(wǎng)格完全相同。網(wǎng)格的粗略近似方法通常更有效,在游戲運(yùn)行過(guò)程中難以察覺(jué)。

最簡(jiǎn)單(并且也是處理器開(kāi)銷最低)的碰撞體是__原始__碰撞體類型。在 3D 中,這些碰撞體為盒型碰撞體、球形碰撞體和膠囊碰撞體。在 2D 中,可以使用?2D 盒型碰撞體?和?2D 圓形碰撞體。可以將任意數(shù)量的上述碰撞體添加到單個(gè)游戲?qū)ο笠詣?chuàng)建__復(fù)合碰撞體__。


復(fù)合碰撞體

復(fù)合碰撞體可以模擬游戲?qū)ο蟮男螤?,同時(shí)保持較低的處理器開(kāi)銷。為了獲得更多靈活性,可以在子游戲?qū)ο笊咸砑宇~外的碰撞體。例如,可以相對(duì)于父游戲?qū)ο蟮谋镜剌S來(lái)旋轉(zhuǎn)盒體。在創(chuàng)建像這樣的復(fù)合碰撞體時(shí),層級(jí)視圖中的根游戲?qū)ο笊蠎?yīng)該只使用一個(gè)剛體組件。

原始碰撞體無(wú)法正常處理剪切變換。如果在變換層級(jí)視圖中組合使用旋轉(zhuǎn)和非均勻比例,從而使產(chǎn)生的形狀不再是原始形狀,則原始碰撞體無(wú)法正確表示這個(gè)形狀。

網(wǎng)格碰撞體

然而,在某些情況下,即使復(fù)合碰撞體也不夠準(zhǔn)確。在 3D 中,可以使用網(wǎng)格碰撞體精確匹配游戲?qū)ο缶W(wǎng)格的形狀。在 2D 中,2D 多邊形碰撞體不能完美匹配精靈圖形的形狀,但您可以將形狀細(xì)化到所需的任何細(xì)節(jié)級(jí)別。

這些碰撞體比原始類型具有更高的處理器開(kāi)銷,因此請(qǐng)謹(jǐn)慎使用以保持良好的性能。此外,網(wǎng)格碰撞體無(wú)法與另一個(gè)網(wǎng)格碰撞體碰撞(即,當(dāng)它們進(jìn)行接觸時(shí)不會(huì)發(fā)生任何事情)。在某些情況下,可以通過(guò)在 Inspector 中將網(wǎng)格碰撞體標(biāo)記為?Convex?來(lái)解決此問(wèn)題。此設(shè)置會(huì)產(chǎn)生“凸面外殼”形式的碰撞體形狀,類似于原始網(wǎng)格,但填充了底切。

這樣做的好處是,凸面網(wǎng)格碰撞體可與其他網(wǎng)格碰撞體碰撞,因此,當(dāng)有一個(gè)包含合適形狀的移動(dòng)角色時(shí),便可以使用此功能。但是,一條適用的規(guī)則是將網(wǎng)格碰撞體用于場(chǎng)景幾何體,并使用復(fù)合原始碰撞體近似得出移動(dòng)游戲?qū)ο蟮男螤睢?/p>

靜態(tài)碰撞體

可將碰撞體添加到?jīng)]有剛體組件的游戲?qū)ο?,從而?chuàng)建場(chǎng)景的地板、墻壁和其他靜止元素。這些被稱為_(kāi)靜態(tài)_碰撞體。相反,具有剛體的游戲?qū)ο笊系呐鲎搀w稱為_(kāi)動(dòng)態(tài)_碰撞體。靜態(tài)碰撞體可與動(dòng)態(tài)碰撞體相互作用,但由于沒(méi)有剛體,因此不會(huì)通過(guò)移動(dòng)來(lái)響應(yīng)碰撞。

物理材質(zhì)

當(dāng)碰撞體相互作用時(shí),它們的表面需要模擬所應(yīng)代表的材質(zhì)的屬性。例如,一塊冰將是光滑的,而橡膠球?qū)⑻峁┐罅磕Σ亮Σ⑶覐椥院芎谩km然碰撞時(shí)碰撞體的形狀不會(huì)變形,但可以使用?Physics Materials(物理材質(zhì))__配置碰撞體的摩擦力和彈力。可能需要進(jìn)行多次試驗(yàn)和糾錯(cuò)后才能獲得正確參數(shù),比如冰材質(zhì)將具有零(或非常低的)摩擦力,而橡膠材質(zhì)則具有高摩擦力和近乎完美的彈性。有關(guān)可用參數(shù)的更多詳細(xì)信息,請(qǐng)參閱物理材質(zhì)和?2D 物理材質(zhì)的參考頁(yè)面。請(qǐng)注意,由于歷史原因,3D 資源實(shí)際上稱為?Physic Material(物理材質(zhì))__(_不帶_ s),而等效的 2D 資源則稱為 _Physics Material 2D(2D 物理材質(zhì))__(_帶?s)。

觸發(fā)器

腳本系統(tǒng)可以使用?OnCollisionEnter?函數(shù)檢測(cè)何時(shí)發(fā)生碰撞并啟動(dòng)操作。但是,也可以直接使用物理引擎檢測(cè)碰撞體何時(shí)進(jìn)入另一個(gè)對(duì)象的空間而不會(huì)產(chǎn)生碰撞。配置為_(kāi)_觸發(fā)器__(使用?Is Trigger?屬性)的碰撞體不會(huì)表現(xiàn)為實(shí)體對(duì)象,只會(huì)允許其他碰撞體穿過(guò)。當(dāng)碰撞體進(jìn)入其空間時(shí),觸發(fā)器將在觸發(fā)器對(duì)象的腳本上調(diào)用?OnTriggerEnter?函數(shù)。


腳本碰撞回調(diào)

發(fā)生碰撞時(shí),物理引擎會(huì)在附加到相關(guān)對(duì)象的所有腳本上調(diào)用特定名稱的函數(shù)??梢栽谶@些函數(shù)中放置所需的任何代碼來(lái)響應(yīng)碰撞事件。例如,當(dāng)汽車撞到障礙物時(shí),可以播放碰撞音效。

在第一個(gè)檢測(cè)到碰撞的物理更新中,將調(diào)用?OnCollisionEnter?函數(shù)。在保持接觸的更新期間,將調(diào)用?OnCollisionStay,最后由?OnCollisionExit?指示接觸已經(jīng)中斷。觸發(fā)碰撞體會(huì)調(diào)用模擬的?OnTriggerEnter、OnTriggerStay?和?OnTriggerExit?函數(shù)。請(qǐng)注意,對(duì)于 2D 物理,可使用在名稱中附加了?2D?字樣的等效函數(shù),例如?OnCollisionEnter2D。有關(guān)這些函數(shù)和代碼示例的完整詳細(xì)信息,請(qǐng)參閱關(guān)于?MonoBehaviour?類的腳本參考頁(yè)面。

對(duì)于正常的非觸發(fā)碰撞,還有一個(gè)額外的細(xì)節(jié),即所涉及的對(duì)象中至少有一個(gè)對(duì)象必須具有非運(yùn)動(dòng)剛體(即,必須關(guān)閉 _Is Kinematic_)。如果兩個(gè)對(duì)象都是運(yùn)動(dòng)剛體,則不會(huì)調(diào)用?OnCollisionEnter?等函數(shù)。對(duì)于觸發(fā)碰撞,此限制不適用,因此運(yùn)動(dòng)和非運(yùn)動(dòng)剛體都會(huì)在進(jìn)入觸發(fā)碰撞體時(shí)提示調(diào)用?OnTriggerEnter。

碰撞體相互作用

碰撞體彼此之間的相互作用根據(jù)剛體組件的配置不同而不同。三個(gè)重要的配置是_靜態(tài)碰撞體 (Static Collider)(即完全沒(méi)有附加任何剛體)、剛體碰撞體 (Rigidbody Collider)_ 和_運(yùn)動(dòng)剛體碰撞體 (Kinematic Rigidbody Collider)_。

靜態(tài)碰撞體

靜態(tài)碰撞體是具有碰撞體而沒(méi)有剛體的游戲?qū)ο蟆lo態(tài)碰撞體在大多數(shù)情況下用于表示始終停留在同一個(gè)地方而永遠(yuǎn)不會(huì)四處移動(dòng)的關(guān)卡幾何體??拷膭傮w對(duì)象會(huì)與靜態(tài)碰撞體發(fā)生碰撞,但不會(huì)移動(dòng)靜態(tài)碰撞體。

在特殊情況下,物理引擎針對(duì)永遠(yuǎn)不會(huì)移動(dòng)的靜態(tài)碰撞體進(jìn)行優(yōu)化。例如,即使您移動(dòng)靜態(tài)碰撞體,停在靜態(tài)碰撞體上的車輛也會(huì)保持睡眠狀態(tài)。您可以在運(yùn)行時(shí)啟用、禁用或移動(dòng)靜態(tài)碰撞體,而不會(huì)特別影響物理引擎的計(jì)算速度。另外,只要縮放比例是統(tǒng)一的(無(wú)偏差),就可以安全地縮放靜態(tài)網(wǎng)格碰撞體。

剛體碰撞體

這是一種附加了碰撞體和普通非運(yùn)動(dòng)剛體的游戲?qū)ο?。剛體碰撞體完全由物理引擎模擬,并可響應(yīng)通過(guò)腳本施加的碰撞和力。剛體碰撞體可與其他對(duì)象(包括靜態(tài)碰撞體)碰撞,是使用物理組件的游戲中最常用的碰撞體配置。

運(yùn)動(dòng)剛體碰撞體

這是一種附加了碰撞體和_運(yùn)動(dòng)_剛體(即啟用了剛體的?IsKinematic?屬性)的游戲?qū)ο???墒褂媚_本來(lái)移動(dòng)運(yùn)動(dòng)剛體對(duì)象(通過(guò)修改對(duì)象的變換組件),但該對(duì)象不會(huì)像非運(yùn)動(dòng)剛體一樣響應(yīng)碰撞和力。運(yùn)動(dòng)剛體應(yīng)該用于符合以下特征的碰撞體:偶爾可能被移動(dòng)或禁用/啟用,除此之外的行為應(yīng)該像靜態(tài)碰撞體一樣。這方面的一個(gè)例子是滑動(dòng)門,這種門通常用作不可移動(dòng)的物理障礙物,但必要時(shí)可以打開(kāi)。與靜態(tài)碰撞體不同,移動(dòng)的運(yùn)動(dòng)剛體會(huì)對(duì)其他對(duì)象施加摩擦力,并在雙方接觸時(shí)“喚醒”其他剛體。

即使處于不動(dòng)狀態(tài),運(yùn)動(dòng)剛體碰撞體也會(huì)對(duì)靜態(tài)碰撞體產(chǎn)生不同的行為。例如,如果將碰撞體設(shè)置為觸發(fā)器,則還需要向其添加剛體以便在腳本中接收觸發(fā)器事件。如果不希望觸發(fā)器在重力作用下跌落或在其他方面受物理影響,則可以在其剛體上設(shè)置?IsKinematic?屬性。

可使用?IsKinematic?屬性隨時(shí)讓剛體組件在正常和運(yùn)動(dòng)行為之間切換。

這方面的一個(gè)常見(jiàn)例子是“布娃娃”效果;在這種效果中,角色通常在動(dòng)畫下移動(dòng),但在爆炸或猛烈碰撞時(shí)被真實(shí)拋出。角色的四肢可被賦予自己的剛體組件,并在默認(rèn)情況下啟用?IsKinematic。肢體將通過(guò)動(dòng)畫正常移動(dòng),直到所有這些肢體關(guān)閉?IsKinematic?為止,然后它們立即表現(xiàn)為物理對(duì)象。此時(shí),碰撞或爆炸力將使角色飛出,使肢體以令人信服的方式被拋出。

碰撞操作矩陣

當(dāng)兩個(gè)對(duì)象碰撞時(shí),可能會(huì)發(fā)生許多不同的腳本事件,具體取決于碰撞對(duì)象的剛體配置。以下圖表詳細(xì)列出了根據(jù)附加到對(duì)象的組件來(lái)調(diào)用的事件函數(shù)。某些組合僅會(huì)使兩個(gè)對(duì)象之中的一個(gè)對(duì)象受到碰撞的影響,但一般規(guī)則是物理特性不會(huì)應(yīng)用于沒(méi)有附加剛體組件的對(duì)象。


Unity-碰撞體的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
浑源县| 获嘉县| 郎溪县| 时尚| 新巴尔虎左旗| 会昌县| 垫江县| 米泉市| 长顺县| 祁连县| 赤壁市| 松江区| 高密市| 娄底市| 太仓市| 乐陵市| 遵化市| 云和县| 漳州市| 临海市| 锡林浩特市| 海安县| 巴彦县| 昔阳县| 吉木萨尔县| 崇礼县| 哈巴河县| 龙海市| 平邑县| 紫云| 泗阳县| 左权县| 河北区| 吴忠市| 阳泉市| 勐海县| 望都县| 平塘县| 邵阳县| 吴堡县| 南靖县|