Unity C# | 碰撞事件的撰寫

更新 發佈閱讀 4 分鐘

前言

  這篇文章將會講述碰撞事件的撰寫,跟碰撞事件有關的函式共有六種,分別為 OnCollisionEnter/Stay/Exit 和 OnTriggerEnter / Stay /Exit ,本篇文章將會講述通用的邏輯。

Collider | 碰撞體

  在之前我從組件(Component)和程式(c#)來介紹碰撞相關的程式碼和遊戲組建,今天這篇文章會面向「使用程式碰撞體撰寫事件」,比較基礎的知識可以參考下列文章:

《Unity Component | Collider & isTrigger》

《Unity C# | OnCollision & OnTrigger》

Tag | 標籤

  同時今天會講述到標籤的使用,這是在 Unity 介面中很常看到的東西,掛載在遊戲物件中,詳請可以參考之前的一篇文章

《Unity C# | Tag和Layer差異與特性 & 抓取Tag物件

OnCollision/Trigger... | 碰撞事件和觸發事件

  在程式撰寫中,會很頻繁的使用 Collider 來進行碰撞或觸發的撰寫,接下來會從定義開始,再到應用進行介紹。

定義

Void OnTriggerEnter(Collider other)
{ 
  Debug.Log("觸發碰撞事件");
}

  碰撞事件和觸發事件簡稱本事件,上述程式碼是 OnCollisionEnter 的函式,當符合條件的遊戲物件剛觸碰到本物件,則會呼叫一次本事件,其中 other 的資料型態是 Collider ,遊戲物件會被儲存在這個欄位,有點難懂嗎?接下來讓我們從頭開始。

簡單配置

  首先,我們有一個遊戲物件,像是遊戲的主角,上面掛載著 Rigidbody 和 Collider ,同時,有另一個掛載 Collider 的物件,這個 Collider 中的 isTrigger可能被勾選。

  這兩個物件中,無論程式腳本掛在哪一個物件中,這個碰撞 / 觸發的機制都會成立,因此都會運作,只是讓程式運作的主體不同。

應用

  接下來會使用玩家跟陷阱的事件作為介紹。

1. 建立一個能移動的玩家,無論是使用 Cube 或製作一個人物都可以,讓他掛載 Rigidbody 和 Collider 。

2. 建立一個遊戲物件,裝上 Collider,並把遊戲物件命名為陷阱(trap)。

3. 創建一個程式腳本,放進玩家或陷阱,把裡面的 Start 和 Update 刪除,並新增一個 OnCollisionEnter 的函式,這個函式跟前面刪掉的兩個函式相同,屬於 Unity 官方內建,因此如果沒辦法連接到 Unity 資料庫,那你應該是寫錯了。

4. 此時已經可以觸發事件了,如果你用 Debug.Log 去確認,你會發現當玩家跟陷阱碰撞後,這個函式已經可以運作了。

5. 在事件內添加 If 判斷句,直接使用後面的 other ,此時你會發現可以調動這個 Collision 的其他資訊,像是 GameObject 、 Tag 等等,此時你可以藉此控制碰撞的對象,此時你撰寫程式碼抓取特定 Tag,如果 Unity 不存在這個Tag 的名稱,你依然可以先用程式碼去抓取。

6. 在 Unity 中 Tag 和 Layers 的部分,新增一個 Tag ,命名前面抓取的 Tag 名稱,並讓沒放程式腳本的另一個物件擁有這個 Tag。

7. 至此,你的玩家可以在碰觸到陷阱時觸發事件,而碰觸到其他物件不會有任何反應了。

後記

  至此,碰撞的基礎使用已經都講解完了,如果未來有想到更專業的使用方式才會有新的章節。

參考資料

Unity API | OnCollisionEnter(Collision)

瓶裝雪

想了解我更多嗎?


留言
avatar-img
瓶裝雪的沙龍
117會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
UnityEvent 簡單介紹。
Thumbnail
UnityEvent 簡單介紹。
Thumbnail
這篇文章將會講述彈簧物件的物件介紹、製作流程、展示影片。
Thumbnail
這篇文章將會講述彈簧物件的物件介紹、製作流程、展示影片。
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
Thumbnail
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
前言   這篇文章將會講述碰撞事件的撰寫,跟碰撞事件有關的函式共有六種,分別為 OnCollisionEnter/Stay/Exit 和 OnTriggerEnter / Stay /Exit ,本篇文章將會講述通用的邏輯。 Collider | 碰撞體   在之前我從組件(Component)和程
Thumbnail
前言   這篇文章將會講述碰撞事件的撰寫,跟碰撞事件有關的函式共有六種,分別為 OnCollisionEnter/Stay/Exit 和 OnTriggerEnter / Stay /Exit ,本篇文章將會講述通用的邏輯。 Collider | 碰撞體   在之前我從組件(Component)和程
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News