[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM