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。