Unity C# | OnCollision & OnTrigger

閱讀時間約 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

後記

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

瓶裝雪

你對我有興趣了?那太好了,我還有很多的作品跟知識可以讓你看看,無論是我對了抒發情感和鍛鍊文筆的生活與戀愛的文章、還是關於我自己專案的日程紀錄、粒子特效的作品展示,都可以在下面找到我。
最新消息與時間軸:
程式與設計:
戀愛與生活:
粒子與特效:
遊戲製作:
為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述物理射線的運作原理,以及他們怎麼使用,在 Unity 中射線是非常重要的一個部分,無論是 Debug 或是物理射線,都需要理解並懂得運用。
這篇文章將會講述在Unity中跟角度有關的兩項變數有什麼樣的地位和運作方式,我們只要撰寫跟角色角度有關的程式碼,就絕對不會繞開這兩個變數。
這篇文章我將會講述關於 Update 相關的函式,並介紹他們在遊戲設計中所代表的地位,當未來需要使用時可以回來參考這篇文章。
這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
這篇文章將會講述 Unity Shader 及簡單的模式設定。
本篇文章將會介紹Switch和Enum,Switch這是一個等同開關的陳述式,相較於頻繁的「if」和「else if」,是一個在眾多方案中切換的一個好用法;Enum是具名常數,可以輔助並提升程式設計的易讀性。
這篇文章將會講述物理射線的運作原理,以及他們怎麼使用,在 Unity 中射線是非常重要的一個部分,無論是 Debug 或是物理射線,都需要理解並懂得運用。
這篇文章將會講述在Unity中跟角度有關的兩項變數有什麼樣的地位和運作方式,我們只要撰寫跟角色角度有關的程式碼,就絕對不會繞開這兩個變數。
這篇文章我將會講述關於 Update 相關的函式,並介紹他們在遊戲設計中所代表的地位,當未來需要使用時可以回來參考這篇文章。
這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
這篇文章將會講述 Unity Shader 及簡單的模式設定。
本篇文章將會介紹Switch和Enum,Switch這是一個等同開關的陳述式,相較於頻繁的「if」和「else if」,是一個在眾多方案中切換的一個好用法;Enum是具名常數,可以輔助並提升程式設計的易讀性。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。