uninty3d之發生碰撞事件和觸發事件條件

2021-08-14 05:32:37 字數 1227 閱讀 7775

總結:要發生碰撞事件(雙方都能收到)

1 去碰撞的物體包括剛體和碰撞體

2 被撞的物體包括碰撞體

要發生觸發事件(雙方都能收到)

1 去碰撞的物體包括剛體和碰撞體,被碰的物體包含碰撞體即可

2 去碰撞的物體或者被碰物體其中乙個開啟istrigger即可。

碰撞的雙方中一定要有乙個rigidbody存在,並且碰撞雙方必須都要有碰撞體

元件。但做實驗的時候發現了乙個很詭異的事情,就是發生碰撞的主體一定是要

帶剛體的,即只有帶剛體的碰撞體去撞其他碰撞體時,雙方才會收到碰撞

事件,以

下是我做的實驗:

一、控制a(剛體加碰撞體)撞擊 靜止的b(只有碰撞體),雙方能收到碰

撞事件。

二、控制b(只有碰撞體)撞擊 靜止的a(剛體加碰撞體),雙方收不到碰

撞事件。

三、讓a(剛體加碰撞體)自由下落,然後控制b(只有碰撞體)去撞擊a,

雙方能受到碰撞事件。

得出的結論似乎是如果碰撞雙方只有乙個有剛體,那麼那個剛體一定要處

於運動的狀態下才會有碰撞事件發生。

下面就是我做的測試情況,都是a物體去撞b物體。

一、a(碰撞體),b(沒有碰撞體,無論有沒有剛體),沒有觸發事件。

二、a(碰撞體),b(碰撞體),沒有觸發事件。

二、a(碰撞體和剛體,開啟istrigger),b(碰撞體,關閉istrigger),雙方都能收到觸發事件。

三、a(碰撞體和剛體,關閉istrigger),b(碰撞體,開啟istrigger),雙方都能收到觸發事件。

四、a (碰撞體,關閉istrigger),b(碰撞體和剛體,開啟istrigger),沒有觸發事件。

五、a (碰撞體,開啟istrigger),b(碰撞體和剛體,關閉istrigger),沒有觸發事件。

額外實驗:

六、a(碰撞體和剛體,開啟istrigger)自由下落,b(碰撞體)撞擊a,雙方都能收到觸發事件。

根據上面的實驗得出,如果要收到觸發事件,必須滿足如下三個條件:

1、必須都要有碰撞器元件(collider),其實上面的碰撞事件同樣也需要這個前提條件。

2、必須有乙個物體帶剛體元件,並且處於運動狀體中(包括主動運動去撞擊別人和在運動過程中被別人撞擊)。

3、兩個碰撞器中至少有乙個開啟了istrigger。

2023年3月13日補充:

乙個遊戲物體可以帶多個碰撞體,觸發事件和碰撞事件可以同時發生在同乙個遊戲物體上

Unity3D學習之(忽略碰撞器 和角色碰撞器)

一 忽略碰撞 為什麼要用忽略碰撞呢?因為有些時候我們不想讓指定的兩物件發生碰撞,即要忽略他們的碰撞!public transform ball void start 效果圖 二 射線 我們要想在遊戲中發射一條射線,必須要有兩個元素,乙個起始點,乙個方向。ray.origin 射線起點 ray.dir...

Unity 3D 物理引擎之碰撞器

碰撞器非為很多種,在這就不一一介紹了,值得注意的物體間碰撞的忽略有兩種方法,一種是通過指令碼裡的 實現兩個物體不發生碰撞,方法為 作用是設定遊戲物體ball a不與當前指令碼掛到的物體發生碰撞,注意,引數是遊戲物體的collider元件 physics.ignorecollision ball a....

Unity3D之怎麼實現粒子特效的碰撞

經過測試學習,總結了關於怎麼讓粒子和物體發生碰撞和怎麼讓粒子在碰撞後消失的幾點看法 關於碰撞檢測的主要配置我們看圖中的collision 第一項 因為是乙個3d遊戲,所以這裡我選擇的是world 第二項 dampen 抑制 0 1 選這個為1時 完全抑制 碰撞之後,阻止了粒子,可以使碰撞的粒子消失 ...