找回密碼
 注冊帳號

掃一掃,訪問微社區

(spherecollider)

2015-1-7 01:16| 發布者: 楊炎| 查看: 1485| 評論: 0|原作者: 蠻牛|來自: unity3d腳本manual

摘要: (sphere collider)球形碰撞體(sphere collider)是基本球形碰撞基元。一堆球形碰撞體 (sphere collider)屬性屬性:功能:為觸發器 (is trigger)如果啟用,此碰撞體 (collider) 則用于觸發事件,會由物理引擎忽略。材 ...

(sphere collider)

球形碰撞體(sphere collider)是基本球形碰撞基元。

一堆球形碰撞體 (sphere collider)

屬性

屬性:

功能:

觸發器 (is trigger)

如果啟用,此碰撞體 (collider) 則用于觸發事件,會由物理引擎" target="_blank" class="relatedlink">物理引擎忽略。

材質 (material)

引用可確定此碰撞體 (collider) 與其他碰撞體 (collider) 的交互方式的物理材質 (physics material)。

半徑 (radius)

碰撞體 (collider) 大小。

中心 (center)

碰撞體 (collider) 在對象局部坐標空間中的位置。

詳細信息

球體碰撞體 (sphere collider) 可以按均勻比例調整大小,但是不能沿各個軸調整。它適用于下落的卵石、乒乓球、彈珠等。

標準球體碰撞體 (sphere collider)

碰撞體 (collider) 與剛體 (rigidbody) 結合使用可使 unity 中的物理變得生動。剛體 (rigidbody) 使對象可以受物理控制,而碰撞體 (collider) 使對象可以相互碰撞。碰撞體 (collider) 必須獨立于剛體 (rigidbody) 添加到對象。碰撞體 (collider) 并不一定需要附加剛體 (rigidbody),但是必須剛體 (rigidbody) 才能使對象由于碰撞而移動。

當兩個碰撞體 (collider) 之間發生碰撞時并且如果其中至少一個附加了剛體 (rigidbody),會將三條碰撞消息向外發送給附加到它們的對象。這些事件可以在腳本中進行處理,使您可以在使用或不使用內置 nvidia physx 引擎的情況下創建獨特行為。

觸發器 (trigger)

使用碰撞體 (collider) 的備選方法是將其作為觸發器 (trigger),只需在檢視視圖 (inspector) 中選中“為觸發器”(istrigger) 屬性復選框即可。觸發器 (trigger) 實際上會被物理引擎忽略,并具有一組獨有的三條觸發器 (trigger)消息,這些消息會在與觸發器 (trigger) 發生碰撞時向外發送。觸發器 (trigger) 可用于觸發游戲中的其他事件,如劇情畫面、自動門打開、顯示輔導消息等。請充分發揮您的想象力!

請注意,要使兩個觸發器 (trigger) 在碰撞時向外發送觸發器 (trigger) 事件,其中之一必須還包括剛體 (rigidbody)。要使觸發器 (trigger) 與普通碰撞體 (collider) 碰撞,則其中之一必須附加剛體 (rigidbody)。有關不同類型碰撞的詳細圖表,請參閱下面“高級”部分中的碰撞動作矩陣。

摩擦力和彈力

摩擦力、彈力和柔軟度在物理材質 (physisc material)中定義。標準資源 (standard asset)包含最常見的物理材質 (physisc material)。要使用其中之一,請單擊“物理材質”(physisc material) 下拉菜單并選擇一個,例如“冰”(ice)。還可以創建自己的物理材質 (physisc material) 并調整所有摩擦力值。

提示

要為對象添加多個碰撞體(collider),請創建子游戲對象 (gameobject) 并向每個子游戲對象 (gameobject) 附加碰撞體(collider)。這樣便可以獨立處理每個碰撞體(collider)。

可以在場景視圖 (scene view)中查看小圖示以了解在對象上計算碰撞體(collider) 的方式。

碰撞體(collider) 會盡量匹配對象的縮放。如果您具有不均勻縮放(在各個方向上不同的縮放),則只有網格碰撞體(mesh collider) 才能完全匹配。

如果通過其變換組件 (component) 移動某個對象,但是希望接收碰撞體(collider)/觸發器 (trigger) 消息,則必須將剛體 (rigidbody) 附加到移動的對象。

如果創建爆炸,則將具有大量阻力和一個球體碰撞體 (sphere collider) 的剛體 (rigidbody) 添加到它,以便使其從擊中的墻壁推出去一點,這會非常有效。

高級

碰撞體 (collider) 組合

在 unity 中可以進行許多不同的碰撞體 (collider) 組合。每個游戲都是獨一無二的,不同組合可能更適合于不同類型的游戲。如果在游戲中使用物理,則了解不同基本碰撞體 (collider) 類型、其常見用途以及與其他類型對象的交互方式會十分有幫助。

靜態碰撞體 (static collider)

這些是附加剛體 (rigidbody)、但的確附加了碰撞體 (collider) 的游戲對象 (gameobject)。這些對象應保持靜態,或很少移動。這些十分適用于環境幾何結構。它們在剛體 (rigidbody) 與之碰撞時不會移動。

剛體碰撞體 (rigidbody collider)

這些游戲對象 (gameobject) 同時包含剛體 (rigidbody) 和碰撞體 (collider)。它們通過腳本編寫的力和碰撞,完全受物理引擎影響。它們可以與僅包含碰撞體 (collider) 的游戲對象 (gameobject) 碰撞。這些很可能是使用物理的游戲中的主要碰撞體 (collider) 類型。

運動學剛體碰撞體 (kinematic rigidbody collider)

此游戲對象 (gameobject) 包含碰撞體 (collider) 和標記有“為運動學”(iskinematic)的剛體 (rigidbody)。要移動此游戲對象 (gameobject),請修改其變換組件 (component),而不是應用力。它們類似于靜態碰撞體 (static collider),但是更適合于要經常四處移動碰撞體 (collider) 的情況。有一些使用此游戲對象 (gameobject) 的其他專業方案。

此對象可以用于通常希望靜態碰撞體 (static collider) 發送觸發器 (trigger) 事件的情況。因為觸發器 (trigger) 必須附加剛體 (rigidbody),所以應添加剛體 (rigidbody),然后啟用“為運動學”(iskinematic)。這可防止對象脫離物理影響,并使您可以在需要時接收觸發器 (trigger) 事件。

運動學剛體 (kinematic rigidbody) 可以方便地打開和關閉。這適合于在以下情況中創建布娃娃:通常希望角色跟隨在動畫之后,然后在發生碰撞時(通過爆炸或所選的任何其他事物進行提示)變為布娃娃。發生這種情況時,只需通過腳本將所有運動學剛體 (kinematic rigidbody) 轉變為普通剛體 (rigidbody)。

如果讓剛體 (rigidbody) 靜止下來以便在一段時間內不移動,它們會“入睡”。即,它們在物理更新過程中不會進行計算,因為它們不會前往任何位置。如果將運動學剛體 (kinematic rigidbody) 從休眠的普通剛體 (rigidbody) 下邊移走,則休眠的剛體 (rigidbody) 將被喚醒并在物理更新中重新準確計算。因此如果您具有許多要四處移動的靜態碰撞體 (static collider) 并且讓不同對象正確落到其上,請使用運動學剛體碰撞體 (kinematic rigidbody collider)。

碰撞動作矩陣

根據兩個碰撞對象的配置,可能發生一些不同動作。下圖概述了可以基于附加到其的組件 (component) 對兩個碰撞對象進行的預計。一些組合僅導致兩個對象之一受碰撞影響,因此請記住標準規則 - 物理不會應用于未附加剛體 (rigidbody) 的對象。

進行碰撞檢測并在碰撞時發送消息

靜態碰撞體 (static collider)

剛體碰撞體 (rigidbody collider)

運動學剛體碰撞體 (kinematic rigidbody collider)

靜態觸發碰撞體 (static trigger collider)

剛體觸發碰撞體 (rigidbody trigger collider)

運動學剛體觸發碰撞體 (kinematic rigidbody trigger collider)

靜態碰撞體 (static collider)

y

剛體碰撞體 (rigidbody collider)

y

y

y

運動學剛體碰撞體 (kinematic rigidbody collider)

y

靜態觸發碰撞體 (static trigger collider)

剛體觸發碰撞體 (rigidbody trigger collider)

運動學剛體觸發碰撞體 (kinematic rigidbody trigger collider)

碰撞時發送觸發器 (trigger) 消息

靜態碰撞體 (static collider)

剛體碰撞體 (rigidbody collider)

運動學剛體碰撞體 (kinematic rigidbody collider)

靜態觸發碰撞體 (static trigger collider)

剛體觸發碰撞體 (rigidbody trigger collider)

運動學剛體觸發碰撞體 (kinematic rigidbody trigger collider)

靜態碰撞體 (static collider)

y

y

剛體碰撞體 (rigidbody collider)

y

y

y

運動學剛體碰撞體 (kinematic rigidbody collider)

y

y

y

靜態觸發碰撞體 (static trigger collider)

y

y

y

y

剛體觸發碰撞體 (rigidbody trigger collider)

y

y

y

y

y

y

運動學剛體觸發碰撞體 (kinematic rigidbody trigger collider)

y

y

y

y

y

y

基于層的碰撞檢測

在 unity 3.x 中,我們引入了某個稱為基于層的碰撞檢測 (layer-based collision detection)的功能,現在可以有選擇性地告知 unity 游戲對象 (gameobject) 與它們附加到的特定層碰撞。有關更多信息,請單擊此處

相關閱讀

文章點評
相關文章
女校游泳队彩金