盒子碰撞器(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
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 |