1. 程式人生 > >uninty3d之發生碰撞事件和觸發事件條件

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

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

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。