2017年5月30日 星期二

[Unity]筆記: 2D碰撞

2D碰撞

在遊戲中,碰撞行為是不可或缺的,而在Unity中,我們可以透過內建的幾個簡單元件配合特定的script method就可以達成.

在碰撞行為中,可以分為主動與被動,就是衝撞與被撞的物件,而這兩者在實作上是有區別的.

在衝撞物件中,我們需要在物件的inspector中加入兩個新元件,Rigidbody2D與Collider,這兩個元件都可以在Physics 2D中找到.

Rigidbody2D: 

即2D剛體,用來處理物理運算用的元件,如重力,摩擦係數及碰撞等等. 

在剛體中有個Body type,是用來決定碰撞的主要因素,Body type可以分為下列三種:

1. Dynamic:

    Dynamic具所有物理特性(Gravity, Forces),可以碰撞任何BodyType,相對的資源消耗       就會比其他body type來得多.

2. Kinematic:

    Kinematic不具Gravity及Forces等特性,僅能碰撞Dynamic type,無法碰撞Kinematic       及Static type,所以這種type消耗的資源相對低很多.

3. Static:

    Static大概就是等同於沒有剛體,也就是僅能碰撞Dynamic type.

Collider2D: 

碰撞器,用來定義可碰撞範圍及碰撞器材質等,在Unity中預設了Box Collider 2D, Circle Collider 2D, Edge Collider 2D及Polygon Collider 2D供開發者使用,而這幾種Collider的差別只在於預設範圍不同而已.


被撞的元件中,僅僅只需要碰撞器及一小段script就可以做到被碰撞的效果,該script method 如下:

(當碰撞器一開始發生碰撞時)
void OnCollisionEnter2D(Collision2D collision){
}

(當碰撞器保持在碰撞狀態)
void OnCollisionEnter2D(Collision2D collision){
}

(當碰撞器剛脫離碰撞時)
void OnCollisionEnter2D(Collision2D collision){
}

沒有留言:

張貼留言