天天看點

[Unity2D]Box Collider 2D盒子碰撞器 - linzheng

[Unity2D]Box Collider 2D盒子碰撞器

    盒子碰撞器(BoxCollider2D)是Unity2D中常用的碰撞器,所有為碰撞器,顧名思義,就是用于檢測物體之間的碰撞情況的,Unity2D裡面除了BoxCollider2D碰撞器之外還內建Box2D實體引擎和一系列2D實體元件,分别如下:

    1 Rigid-body元件(RigidBody2D)支援static/kinematic/dynamic 剛體, 品質, 線性/角 速度, 拖動和自動休眠,和固定角度限制。

    2 圓形碰撞器(CircleCollider2D)支援圓心和半徑

    3 盒子碰撞器(BoxCollider2D)支援中心和大小

    4 多邊形碰撞器(PolygonCollider2D)支援任意多邊形。它能通過拖動sprite到元件上來初始化為元件形狀

    5 距離關節(DistanceJoint2D)支援在兩個剛體間存在一個硬連接配接(本人了解是用一個硬的物體(例如小棒)連接配接兩個剛體)

    6 鉸鍊關節(HingeJoint2D)支援線性和有角度的限制以及馬達驅動

    7 滑動關節(SliderJoint2D)支援軸限制,線性限制和馬達驅動

    8 彈簧關節(SpringJoint2D)支援在剛體間使用一個軟彈簧

    在做一些實體的碰撞的時候可以根據遊戲的實際情況來選擇合适的碰撞器,下面以 盒子碰撞器(BoxCollider2D)為例說明一下:

    碰撞器也是屬于遊戲對象的一個元件,可以通過添加元件的方式來添加盒子碰撞器,如下圖所示:

    添加之後如下所示:

    Size和Center很好了解就是用于确定盒子的大小和位子,那個主要看看這個Is Trigger屬性,這個屬性預設是不打勾的,它表示是否啟用觸發器。是否啟用觸發器主要是跟腳本有關系的,啟動觸發器之後碰撞檢測會觸發腳本的相關方法。如:

void OnTriggerEnter2D(Collider2D collidedObject)

void OnTriggerExit2D(Collider2D collidedObject)

    當發生碰撞反應的時候,會先檢查此屬性。

    當激活此選項時,會調用碰撞雙方的腳本 OnTrigger***, 反之,腳本方面沒有任何反應。

    當激活此選項時,不會發生後續實體的反應。反之,發生後續的實體反應。

    總結:Is Trigger 好比是一個實體功能的開關, 是要“實體功能”還是要“OnTrigger腳本”。

    是以如果你需要用腳本來處理一些碰撞發生的一些事情,那就就需要添加腳本來實作着兩個方法。添加腳本如下圖所示:

OnTriggerEnter與OnCollisionEnter的差別

OnTriggerEnter:一個有Rigidbody,另一個有Trigger 的Collider

OnCollisionEnter:一個有Rigidbody(非Kinematic),另一個有非Trigger的Collider

Collision detection occurs and messages are sent upon collision

碰撞後有碰撞檢測并有碰撞資訊發出

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 messages are sent upon collision

碰撞後有觸發資訊

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
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 messages are sent upon collision
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