Unity學習筆記(一):碰撞體(Collider),觸發器(Trigger),剛體(RigidBody)

碰撞體(Collider),觸發器(Trigger),剛體(RigidBody)的相關區分

官方解釋

  • 剛體(Rigidbody):Rigidbody(剛體)組件可使遊戲對象在物理系統的控制下來運動,剛體可接受外力與扭矩力用來保證遊戲對象像在真實世界中那樣進行運動。任何遊戲對象只有添加了剛體組件才能受到重力的影響,通過腳本爲遊戲對象添加的作用力以及通過NVIDIA物理引擎與其他的遊戲對象發生互動的運算都需要遊戲對象添加了剛體組件。

    用來模擬一個物體受到力作用時的表現,如圖中參數,Mass質量,Drag阻力等。
  • 碰撞體(Collider):碰撞體是物理組件的一類,它要與剛體一起添加到遊戲對象上才能觸發碰撞。如果兩個剛體相互撞在一起,除非兩個對象有碰撞體時物理引擎纔會計算碰撞,在物理模擬中,沒有碰撞體的剛體會彼此相互穿過。

    包括不同的 Box Collider(盒碰撞體),Mesh Collider(網格碰撞體)等,這些碰撞器應用的場合不同,但都必須加到GameObjecet身上。
  • 觸發器(Trigger):在Collider面板勾選IS Trigger將其設爲觸發器。

碰撞產生的條件(可調用OnCollisionEnter/Stay/Exit)

1.必須雙方都要有碰撞器,發生碰撞的是碰撞器。
2.運動的一方一定要有剛體,另一方有無剛體無所謂。
注:如果運動的一方無剛體,它去碰撞靜止的剛體,相當於沒有裝上。(無法調用OnCollisionEnter/Stay/Exit)

碰撞器與觸發器的區別

1.碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。
2.當Is Trigger=false時,碰撞器根據物理引擎引發碰撞,產生碰撞的效果,可以調用OnCollisionEnter/Stay/Exit函數;
3.當Is Trigger=true時,碰撞器被物理引擎所忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。

何時使用觸發器

如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器。

相關實驗結果

碰撞事件

1.控制A(剛體加碰撞體)撞擊 靜止的B(只有碰撞體),雙方能收到碰撞事件。
2.控制B(只有碰撞體)撞擊 靜止的A(剛體加碰撞體),雙方收不到碰撞事件。

觸發事件(均爲控制A撞B)

1.A(碰撞體),B(沒有碰撞體,無論有沒有剛體),沒有觸發事件。
2.A(碰撞體),B(碰撞體),沒有觸發事件。
3.A(碰撞體和剛體,開啓IsTrigger),B(碰撞體,關閉IsTrigger),雙方都能收到觸發事件。
4.A(碰撞體和剛體,關閉IsTrigger),B(碰撞體,開啓IsTrigger),雙方都能收到觸發事件。
5.A (碰撞體,關閉IsTrigger),B(碰撞體和剛體,開啓IsTrigger),沒有觸發事件。
6.A (碰撞體,開啓IsTrigger),B(碰撞體和剛體,關閉IsTrigger),沒有觸發事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章