Unity C# | OnCollision & OnTrigger

2022/08/12閱讀時間約 5 分鐘

前言

  這篇文章將會介紹 Unity 中關於物理碰撞與偵測事件,如何使用程式腳本撰寫相關的程式來控制遊戲物件,這是學習 Unity 必學知識,它們在 Unity 中具有不可撼動的核心地位。

前提條件

  當兩個遊戲物件(GameObject)都有碰撞體組件(Collider Component),並且其中一方擁有剛體(Rigidbody),通常是事件的發起人,依據 is Trigger 有沒有勾選,會有 Enter/Stay/Exit 共三種差異。

OnCollision | 物理碰撞體積

  在 Unity 遊戲設計中,會需要讓物件有碰撞體積,並且確認玩家碰撞的情況與情形,有三種不同的情形,物件彼此碰撞的當下、物件保持碰撞的時候、物件離開碰撞後。

OnCollisionEnter

  當物件彼此碰撞的當下,可以使用此函數進行事件,並且我們可以獲取被碰撞體的資訊,通常會放在遊戲物件,並偵測玩家後對玩家進行操作。
private void OnTriggerExit(Collider other)
{
  if (other.tag == "Player")
  {
    BoxCollider coli = GetComponent<BoxCollider>();
    coli.enabled = true;
  }
}

OnCollisionStay

  當物件保持碰撞的時候,可以使用此函數進行事件,並且我們可以獲取被碰撞體的資訊,將會每一幀觸發一次函式。
private void OnCollisionStay(Collider other)
{
  Debug.Log("玩家扣1滴血);
  //這行程式會狂跳。
}

OnCollisionExit

  當物件離開碰撞的時候,可以使用此函數進行事件,並且我們可以獲取被碰撞體的資訊,將只會觸發一次。
private void OnCollisionExit(Collider other)
{
  Debug.Log("玩家離開");
}

OnTrigger | 偵測觸發事件

  在使用上跟碰撞體(Collision)相同,需要勾選 is Trigger ,在這種情況下碰撞體內的全部範圍都會變成偵測範圍,玩家可以自由穿越其中,有物件進入偵測範圍、物件滯留在偵測範圍、物件離開偵測範圍三種不同模式。

OnTriggerEnter

  當玩家進入偵測範圍時,可以用在類似感應門的觸發事件,每次觸發一次事件,離開再進入可以重複觸發,配合上程式撰寫能做出拌線、地雷等一次性事件機關。
private void OnTriggerEnter(Collider other)
{
  Debug.Log("開門");
}

OnTriggerStay

  當玩家留在偵測範圍時,可以每幀觸發一次函數,很適合用在持續扣血的酸液池或消耗耐久度的毒霧等事件。
private void OnTriggerStay(Collider other)
{
  if(other.tag =="Player")
  {
    Rigidbody rigi = other.GetComponent<Rigidbody>();
    Debug.Log("玩浸泡在死亡池中");
    rigi.drag = sticky;
    player = other.gameObject;
    InPool = true;
  }
}

OnTriggerExit

  當玩家離開觸發範圍,會觸發一次函式,如果離開再進入會重複觸發,可以配合程式設計做出一次性的效果,或重複累計次數的機關。
private void OnTriggerEnter(Collider other)
{
  Debug.Log("關門");
}

應用

Unity | Third person | Color Pad | Hue myself 5

ge

Unity Third person | Death Pool | Hue Myself 2

後記

  隨著我的遊戲設計旅途,我在撰寫教學文章上也越來越有心得,相較於當初的第一篇文章,相信我進步了很多,雖然我還是會擔心文章被盜或創意被竊的情況發生,但我還是走在這條路上。

瓶裝雪

你對我有興趣了?那太好了,我還有很多的作品跟知識可以讓你看看,無論是我對了抒發情感和鍛鍊文筆的生活與戀愛的文章、還是關於我自己專案的日程紀錄、粒子特效的作品展示,都可以在下面找到我。
最新消息與時間軸:
程式與設計:
戀愛與生活:
粒子與特效:
遊戲製作:
為什麼會看到廣告
95會員
242內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!