建立內容

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

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

節點結構

首先,我們需要為玩家物件選擇一個根節點。一般來說,場景的根節點應該反映物件期望的功能——也就是這個物件 是什麼 。在左上角的「場景」頁籤中,點擊「其他節點」按鈕,並新增一個 Area2D 節點到場景中。

../../_images/add_node.webp

當您加入 Area2D 節點後,Godot 會在場景樹中其旁邊顯示下列 警告圖示

../../_images/no_shape_warning.webp

這個警告訊息告訴我們, Area2D 節點需要一個形狀才能偵測碰撞或重疊。我們可以 暫時忽略這個警告 ,因為我們將先設定玩家的視覺效果(使用動畫精靈)。一旦視覺效果準備就緒,我們將新增一個碰撞形狀作為子節點。這樣可以讓我們根據精靈的外觀精確地調整形狀的大小和位置。

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

在將任何子節點加入 Player 節點之前,我們要確保不會因為點擊到子節點而意外移動或調整它們的大小。選取該節點,然後點擊鎖頭右邊的圖示。它的工具提示說明:「將選取的節點及其子節點群組化。這樣一來,當在 2D 和 3D 視圖中點擊任何子節點時,都會改為選取父節點。」

../../_images/lock_children.webp

將場景儲存為 player.tscn 。點擊 場景 > 儲存 ,或按下在 Windows/Linux 上是 Ctrl + S,在 macOS 上是 Cmd + S

備註

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

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

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

Sprite 動畫

點擊 Player 節點,然後新增一個子節點 AnimatedSprite2D (在 Windows/Linux 上按 Ctrl + A,macOS 上按 Cmd + A)。 AnimatedSprite2D 將負責我們玩家的外觀和動畫。請注意節點旁邊有一個警告符號。 AnimatedSprite2D 需要一個 SpriteFrames 資源,其中包含它可以顯示的動畫列表。請確保已選取 AnimatedSprite2D ,然後在 Inspector(屬性檢視器)的 Animation (動畫)區塊下找到 SpriteFrames (Sprite 影格)屬性,點擊 "[empty]" -> "New SpriteFrames"(新增 Sprite 影格):

../../_images/new_spriteframes.webp

點擊您剛建立的 SpriteFrames 以開啟「SpriteFrames」面板:

../../_images/spriteframes_panel.webp

左邊是動畫列表。點擊 default 這個動畫,然後將它 重新命名walk 。接著點擊 新增動畫 按鈕來建立第二個名為 up 的動畫。

在檔案系統停靠視窗中找到玩家圖片 – 它們位於您先前解壓縮的 art 資料夾中。將每個動畫的兩個圖片拖曳到對應動畫面板的 動畫影格 側邊:

  • playerGrey_walk1playerGrey_walk2 用於 walk 動畫

  • playerGrey_up1playerGrey_up2 用於 up 動畫

../../_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

完成後, Area2D 節點上的警告就會消失,因為它現在已指定了形狀,可以與其他物件互動了。

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

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