iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

2D像素遊戲設計經驗分享系列 第 18

2D像素遊戲設計經驗分享 - Unity 物理及碰撞箱基本設定

  • 分享至 

  • xImage
  •  

之前我們為在場景增加了遊戲角色以及一些物品,雖然有動畫,但它們還是沒有動起來,甚至沒有像正常物理一樣落下到平台上。這次我們要來了解 Unity 一些物理系統相關的設定。

首先場景中我們可以為人物增加物理,點擊後你會在檢查器中看到,它只有位置、圖片渲染以及動畫3個部件。如之前所說的,GameObject 是由一個或者多個 Component 組成,所以我們現在要為它新增一個 Rigibody 2D 的部件來讓它可以被物理引擎運算。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146TFEkEXbI4z.png
https://ithelp.ithome.com.tw/upload/images/20231003/20163146Tx13D1WEft.png

為了方便觀察,我們可以先調整遊戲鏡頭大小和位置。點擊 Main Camera,然後在檢查器中調整 X Y 位置,以及鏡頭的大小數字讓預覽的畫面能看見完整的遊戲畫面,大小數字越大,畫面就會縮的越小。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146P2RthEH10D.png

在播放遊戲後,如果看不見畫面,可以調整畫面比例和大小。
https://ithelp.ithome.com.tw/upload/images/20231003/201631460doyOHUI2g.png

然後會看見遊戲的人物雖然具有物理了,但它直接掉到畫面以外的地方。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146ORjCFgFYG7.png

這是因為我們雖然有了物理,但沒有同樣具有物理的地板以停止其下落。再次點擊播放鍵以停止播放,然後我們要為之前繪製的 Tilemap 也增加物理。點擊 Grid 裹面的 Tilemap,然後和人物一樣新增 Rigibody 2D。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146yTq4nnq1Oh.png

如果你播放遊戲,你會發現整個地板都會一起跟著下掉。所以我們需要把它的身體類型改成靜態的 Static。
https://ithelp.ithome.com.tw/upload/images/20231003/201631465CKmro66wy.png

這裹的3個選項分別為 Dynamic、Kinematic 和 Static,Dynamic 為一般物理物件,會利用 Unity 的物理引擎進行運算,Kinematic 則是需要玩家利用程式語言去設定該物件的移動和速度等物理,能為設計者帶來更高的自由度,但使用難度較高和比較複雜,Static 則是 Unity 物理引擎預設它完全不會移動的物件,如地板、牆壁等。

但即使這樣,現在播放遊戲會發現人物還是沒辦法降落在平台上。因為我們需要為兩者去設計碰撞箱 Hitbox。

碰撞箱是為遊戲裹的角色繪製一個隱形的範圍,可以是不同的形狀,物理引擎會透過檢查碰撞箱之間有沒有接觸而進行物理運算。我們可以先為人物繪製碰撞箱,點擊人物後在新增部件的位置搜尋 Collider,會看見有很多碰撞箱的選擇,這次我們先使用2D盒碰撞器 Box Collider 2D。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146LSvWeJAD9A.png

然後點擊編緝碰撞箱,再點擊場景上方的Gizmos按鈕,我們就可以在畫面看見人物被一個綠色正方形框著。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146GNiqaZguDq.png
https://ithelp.ithome.com.tw/upload/images/20231003/20163146jdKvD4JBYP.png
https://ithelp.ithome.com.tw/upload/images/20231003/20163146btiTjI8Yad.png

對畫面中的綠色框拖拉,或者改變檢查器裹的數值,都可以調整碰撞箱的大小。
https://ithelp.ithome.com.tw/upload/images/20231003/201631461tVY1pLkQh.png

另外為了防止角色倒地,我們可以在 Rigibody 的設定中禁止它旋轉。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146Lcl85Wk2dF.png

地板的部份,階層點擊 Tilemap,因為我們是使用 Tilemap 製作場景,我們可以使用磁磚地圖碰撞器 tilemap collider 2d。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146y88TdSdfWR.png

現在播放遊戲應該會看到角色能順利站在平台上。
https://ithelp.ithome.com.tw/upload/images/20231003/20163146qqtOTVystX.png


上一篇
2D像素遊戲設計經驗分享 - 匯入動畫及設定
下一篇
2D像素遊戲設計經驗分享 - 橫向卷軸遊戲的基本移動設計
系列文
2D像素遊戲設計經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言