Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

建立內容

專案設定到位後,我們可以開始處理玩家控制的角色。

第一個場景,我們要來定義 Player 物件。把玩家做成獨立一個 Player 場景的好處是:就算遊戲其他部分還沒做好,也可以獨立測試單一場景。

節點結構

首先,我們需要選擇玩家物件的根節點。一般來說,場景的根節點通常對應了物件所需要的功能——也就是物件 是什麼。點擊 [其他節點] 按鈕,並新增 Area2D 節點至場景中。

../../_images/add_node.webp

Godot 會在場景樹中的節點旁邊顯示一個警告圖示。可以暫時忽略,之後再來處理。

有了 Area2D 節點,我們就能偵測跑到了玩家範圍內物件。我們先點兩下節點,把節點名稱改成 Player 。現在,場景根節點已經設定好了,接著來設定更多節點,新增更多功能。

在我們給 Player 新增任何子節點前,需要先確保不會因為點到 Player 物件而移動到 Player 或改變到大小。先選擇 Player 節點,然後點擊鎖頭右邊的圖示,滑鼠移到圖示上方的時候會顯示提示「確保物件的子級專案無法被選擇。」

../../_images/lock_children.webp

接著保存場景。選擇 [場景] -> [保存],或是在 Windows/Linux 上按鍵盤 Ctrl + S ,在 macOS 上則是 Cmd + S

備註

在這個專案中,我們會遵守 Godot 的命名慣例。

  • GDScript :類別 (節點) 使用大駝峰法 (PascalCase),變數與函式名稱使用蛇形法 (snake_case),常數則使用全大寫 (ALL_CAPS) (詳細請參考 GDScript 風格指南)。

  • C# :類別與匯出的變數與方法使用大駝峰法 (PascalCase),Private 欄位使用底線加小駝峰 (_camelCase),區域變數與參數使用小駝峰法 (camelCase) (請參考 C# 風格指南 )。在連接訊號的時候請特別注意不要打錯方法名稱。

Sprite 動畫

Click on the Player node and add (Ctrl + A on Windows/Linux or Cmd + A on macOS) a child node AnimatedSprite2D. The AnimatedSprite2D will handle the appearance and animations for our player. Notice that there is a warning symbol next to the node. An AnimatedSprite2D requires a SpriteFrames resource, which is a list of the animations it can display. To create one, find the Sprite Frames property under the Animation tab in the Inspector and click "[empty]" -> "New SpriteFrames". Click again to open the "SpriteFrames" panel:

../../_images/spriteframes_panel.webp

左側顯示的是動畫列表。點擊「default」(預設) 並重新命名為「walk」(走路)。接著點擊 [新增動畫] 按鈕來建立第二個動畫,將其命名為「up」(上移)。接著到 [檔案系統] 頁籤中找到玩家圖片——應該放在稍早解壓縮出來的 art 資料夾內。在動畫列表上選擇對應的動畫,並把圖片 playerGrey_up[1/2] 以及 playerGrey_walk[1/2] 拖移到 [動畫影格] 那裡 :

../../_images/spriteframes_panel2.webp

對於遊戲視窗來說,這些玩家圖片看起來有點大,所以我們需要把圖片縮小。點擊 AnimatedSprite 節點,然後把 Scale (縮放) 屬性設為 (0.5, 0.5) 。這個屬性位在屬性面板中 Node2D 標題底下。

../../_images/player_scale.webp

最後,在 Player 節點下新增一個 CollisionShape2D 子節點。這個節點是用來判斷玩家的「碰撞區域 (Hitbox 或 Collision Area)」。在這個角色上很適合使用 CapsuleShape2D 節點,所以我們可以到屬性面板中的 [Shape] (形狀),點擊 [空] -> [新增 CapsuleShape2D]。使用兩個控制尺寸的圓點來把大小調整至覆蓋 Sprite:

../../_images/player_coll_shape.webp

完成之後, Player 看起來應該會像這樣:

../../_images/player_scene_nodes.webp

修改完畢後記得保存場景。

在下一部分中,我們將向玩家節點新增一個腳本,以移動它並為其新增動畫效果。然後,我們將設定碰撞偵測,以瞭解玩家何時被某些東西擊中。