QQ圖片20140529123319

引子

認識RigidBody

rigidbody2d

  1. 當RigidBody2D的質量屬性被設定為0時,剛體的質量變為無限大,此時剛體相當於靜態剛體,永遠一動不動。但是在Unity中你是無法把一個RigidBody2D的質量設定為0的,所以,當你想建立一個靜態剛體時,只需要建立碰撞器,而不需要建立RigidBody2D。
  2. 當我們勾選了is Kenamatic選項時,這個RigidBody2D就不再受物理引擎控制,我們這時候需要通過Transform來控制RigidBody2D的移動,這個選項經常在腳本里對其進行設定。

注意當Gravity Scale設定為0時,該剛體不再受重力影響。

認識Collider2D

在Add Component選項中點選新增Physics2D中的Collider2D即可新增一個碰撞器,碰撞器有以下三種:

  • BoxCollider2D:盒狀碰撞器,一般為矩形。
  • CircleCollider2D:圓形碰撞器。
  • PolygonCollider2D:多邊形碰撞器

我們在為一個2D GameObject新增一個Collider時,這個Collider會自動選擇最合適的大小,但是你可以使用Shift+滑鼠左鍵對Collider的邊界進行調整。在多邊形中,還可以通過Ctrl+滑鼠左鍵來刪除某個多邊形頂點。

當然,針對同一個剛體,我們可以為這個剛體新增多個碰撞提來構造更加複雜的碰撞結構,在官方的岩石Demo – 2D Platformer中你可以看到相應的事例。

關於Is Trigger

如果對一個碰撞器勾選了Is Trigger選項,它就不會與其他沒有勾選Is Trigger的碰撞器發生剛體碰撞,而會發生“Trigger 碰撞”,也就是說,這時碰撞時傳送的訊息是Trigger訊息,而不是Collision訊息,相應地在指令碼中我們要對OnTriggerEnter進行過載,而不是對OnCollisionEnter進行過載。

下圖對Collision和Trigger進行了總結,在分別勾選某些屬性時,都會發送哪些訊息:

collision_chart

.