更新於 2024/10/13閱讀時間約 3 分鐘

Unity C# | Layers

前言

  這篇文章會介紹圖層及相關應用,並藉由範例流程直白理解圖層的功用。

Layers | 圖層

  如果你是一名設計師,那你一定知道圖層是什麼,如果你不是,圖層是一種分類不同物件的透明片,就像蓋上一片片透明板一樣,圖層上面的圖案彼此不會互相影響,但有先後次序。

相機射線
  在 Unity 中,射線是相機運作的一個重要機制,而我們可以把物件放置在不同的圖層中,再讓相機忽略某些圖層的物件,在遊戲設計中,可以藉由切換相機達到許多神奇的效果。

物理射線
  在遊戲程式的範疇中,我們會使用物理射線偵測某些物體,在這之中可以設定忽略某些圖層,或是確保打到某一個圖層後回傳,物理射線能抓取射中遊戲物件的資訊,配合圖層達到許多有趣的效果。

碰撞偵測
  在遊戲程式的範疇中,我們會使用碰撞體 (Collider) 來模擬物體之間的碰撞情形,無論是 2D 還是 3D 遊戲,通常都會使用上碰撞體,而圖層能讓某些物體彼此不會互相碰撞,並針對某些物件碰撞。

Layers Setting | 設定圖層碰撞

  在遊戲中實際使用圖層,除了程式設定以外,總共會有兩個地方,一個是專案設置,另一個是遊戲物件的圖層。

Project Setting | 專案設置
  在 Edit → Project Setting → Physics 的最下面,有 Layers 相關的設定可以做調整,其中打勾的部分是圖層彼此是否會互相影響,沒有勾選就會忽略。 

Game Object Layers | 設定遊戲物件圖層
  在每一個遊戲物件中,都有 Layer 的設定可以選擇,同一個物件只能設定一個圖層,玩家可以使用 Add Layer 添加新圖層,總共能設定 32 層,並有一些是官方鎖定的圖層。

範例 | 讓角色穿越世界

  我以我最近設計遊戲的一個環節,稍作改編進行介紹,接下來我們會簡單敘述簡單 2D 平台遊戲,並使用 Layers 讓玩家穿越世界。

Step.1 創建世界
  首先,創建一個新的 2D 專案,創建 Cube 拉成長條放置在螢幕底端,添加遊戲組件 Box Collider 2D 製作地板,依據喜好建立一個角色,無論是官方的素材商店或是單純的一個 Cube 都可以。

Step.2 角色移動
  撰寫角色移動程式,請使用 Rigidbody 相關的角色控制,網路上有許多相關教學,如果沒接觸過 Unity ,可以從簡單的 2D 平台移動跳躍開始,作為學習 Unity 的拋門磚。

Step.3 碰撞阻礙
  添加兩個 Cube,放置在遊戲平台上面,添加遊戲組件 Box Collider 2D 讓他有碰撞體積,控制角色,確認玩家沒辦法穿越這兩個物件。

Step.4 圖層設置
  分別新增兩個不同的 Layer 並修改兩個物件,讓他們具有像異的圖層,打開專案設置(Project Setting),設定圖層物件,讓他們跟自己不會互相碰撞。

Step.5 切換圖層
  在圖層的左邊有數字編碼,這是這個圖層的 ID ,在程式腳本中設置一個按鍵,切換主角圖層,圖層是遊戲物件下,因此會使用 gameObject.Layer,然後直接指定 ID 就可以了。

Step.6 體驗!
  你現在可以體驗切換圖層了,當你按下按鍵,你就可以穿越不同的物件。

後記

  這次在撰寫 Layer 時,因為我製作的是 3D 遊戲,我自己的主角因為父物件下有掛許多子物件,然而切換圖層不會改變子物件的圖層,我卡在這部分卡很久。

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