2022-08-19|閱讀時間 ‧ 約 5 分鐘

Unity Component | Collider & isTrigger

前言
  這篇文章將會介紹碰撞體,並且說明在不同情況下的使用情形。

碰撞體 | Collider

  碰撞體是 Unity 用來賦予物體體積的組件,當被添加碰撞體的組件會阻擋其他帶有碰撞體的物件, 若要移動帶有碰撞體的遊戲物件,則需要添加剛體。

種類
  碰撞體有不同的總類,這些是比較基礎的幾何形,我們可以借由組合不同的碰撞體來達成複雜的遊戲物件。
BoxCollider: 最原始的碰撞體,為盒子形狀,也是常用的碰撞體。
SphereCollider: 最原始的碰撞體,為圓球形狀,也是常用的碰撞體。
CapsuleCollider: 膠囊形狀的碰撞體,常用在人物身上。
MeshCollider: 建模物件可以使用的碰撞體,比較吃效能。

觸發 | isTrigger
  每一個遊戲碰撞體都擁有一個 isTrigger 的選項可以勾選,這代表碰撞體的體積變成範圍,用來進行遊戲事件的檢測,玩家可以自由穿越其中,搭配程式腳本的撰寫可以進行很多變化。

物理材質 | PhysicMaterial
  在每一個碰撞體的參數中,都擁有一份物理材質的欄位,這是一個物理系統的材質球,裡面包含彈力和摩擦力。
  在遊戲設計中,因為只有包含剛體的物件才會移動,所以每一次的碰撞事件一定包含一份剛體,物理材質會傳送物理參數到擁有剛體的物件,也就是上面談到的彈力和摩擦力。

使用方式

  依照目標需求的不同,碰撞體會有不同的使用方式,核心的應用範圍都圍繞在跟Rigidbody的搭配上面。

無搭配剛體 | Rigidbody
  當遊戲物件沒有剛體,其父物件以上也都沒有剛體,那就屬於這個類型的範疇,無搭配剛體的遊戲物件不會被影響,也不會影響別人。

有搭配剛體 | Rigidbody
  當遊戲物件有剛體時,代表這個物件加入物理系統,並且可以與其他物理系統交互,無法穿越任何碰撞體。
  勾選 kinematic 的物件會變成獨立的物件,完全受動畫腳本和程式腳本的控制,但是依然會影響其他的物件。

複數碰撞體
  碰撞體與剛體可以被視為一個很常見的組合,其中的核心為剛體,一個剛體可以搭配許多不同的碰撞體,組合而成一個巨大的遊戲物件。
  我們可以添加一份剛體到空物件,並新增子物件添加碰撞體,這樣會讓所有的碰撞體組裝成一個遊戲物件,適合用在複雜的遊戲物件。
  如果一份剛體和完全相同的兩份碰撞體組合,同樣的一份碰撞事件會變成兩倍傳回剛體,程式腳本的所有內容也是如此,如果碰撞的當下會生成一隻怪物的話,在這種情況下會生成兩隻。

後記
  在撰寫這篇文章的時候,我現在是很忙碌的狀況,所以我就不搭配圖片來進行說明,結果發現效果很不錯,也許目前我的文筆造詣已經達到可以自稱為作家的程度。

參考資料

Unity API | Collider

Unity API | PhysicMaterial

Unity API | Rigidbody

Unity API | Rigidbody.isKinematic

瓶裝雪

你對我有興趣了?那太好了,我還有很多的作品跟知識可以讓你看看,無論是我對了抒發情感和鍛鍊文筆的生活與戀愛的文章、還是關於我自己專案的日程紀錄、粒子特效的作品展示,都可以在下面找到我。
最新消息與時間軸:
程式與設計:
戀愛與生活:
粒子與特效:
遊戲製作:

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.