Up to date
This page is up to date for Godot 4.3.
If you still find outdated information, please open an issue.
Player 場景與輸入事件
在接下來的兩節課程中,我們將會設計玩家場景、註冊自訂輸入動作、編寫玩家移動程式碼。在最後,你將會得到一個可以八方向移動的可遊玩角色。
在左上角的*場景*功能表中按一下*新建場景*來建立一個新場景。

建立一個 CharacterBody3D 節點來當根節點
將 CharacterBody3D 命名為``Player``。角色身體(Character body)對應的是 2D 遊戲教學中的區域(Area)和剛體(Rigid Body)。與剛體類似,它可以移動並與環境發生碰撞,但它的運動並不是由物理引擎控制的,而是由*你*支配。當我們編寫跳躍和踩踏機制時,你就會看到我們是如何使用這一該節點獨有的功能的。
也參考
要學習更多關於不同物理節點型別的內容,請參閱 物理介紹。
現在,我們將為角色的 3D 模型建立一個基本的裝備。稍後我們將在播放動畫時通過程式碼旋轉模型。
新建一個 Node3D 節點作為 Player 的子節點,並將其命名為 Pivot
然後在檔案系統面板中,按兩下展開 art/ 資料夾,將 player.glb 拖放到 Pivot 節點上。

這樣應該就會把這個模型產生實體為 Pivot 的子項。你可以將其重命名為 Character 。

備註
The .glb files contain 3D scene data based on the open source glTF 2.0
specification. They're a modern and powerful alternative to a proprietary format
like FBX, which Godot also supports. To produce these files, we designed the
model in Blender 3D and exported it to glTF.
與所有型別的物理節點一樣,我們的角色需要一個碰撞形狀才能與環境相碰撞。再次選中 Player 節點並新增 CollisionShape3D 子節點。在*屬性面板*中,為 Shape 屬性新建一個 SphereShape3D。
球體的線框出現在角色的下面。

It will be the shape the physics engine uses to collide with the environment, so
we want it to better fit the 3D model. Make it a bit larger by dragging the orange
dot in the viewport. My sphere has a radius of about 0.8 meters.
Then, move the collision shape up so its bottom roughly aligns with the grid's plane.

To make moving the shape easier, you can toggle the model's visibility by clicking
the eye icon next to the Character or the Pivot nodes.

最後,保存場景為 sayhello.tscn 之類的名稱。
節點準備就緒後,我們開始編寫程式。但首先,我們需要定義一些輸入動作。
建立圖示
要移動角色,我們就要監聽玩家的輸入,比如按下方向鍵。在 Godot 中,我們能夠使用程式碼來綁定按鍵,但還有一個非常強大的系統,可以讓你為一系列按鍵和按鈕設定標籤。這樣可以簡化我們的腳本,讓它們更易讀。
這個系統是“按鍵對應”。可以在*專案*功能表中選擇*專案設定*來打開編輯器。

頂部有許多標籤。點擊*按鍵對應*。你可以在這個視窗頂部新增新的動作;即標籤。下半部分可以為這些動作綁定按鍵。

Godot projects come with some predefined actions designed for user interface design (see above screenshot). These will become visible if you enable the Show Built-in Actions toggle. We could use these here, but instead we're defining our own to support gamepads. Leave Show Built-in Actions disabled.
我們要把這些動作命名為 move_left、move_right、move_forward、move_back、``jump``(向左移動、向右移動、向前移動、向後移動、跳躍)。
要新增動作,可以在頂部的框中輸入名稱然後按確認鍵。

有下列事項需注意:

要為動作綁定按鍵或按鈕,請點擊右側的“+”按鈕。對 move_left 執行此操作,按下左方向鍵,然後按一下*確定*。
將 A 鍵也綁定在動作 move_left 上面。

現在讓我們為手柄左搖桿新增支援。再次點擊“+”按鈕,但是這一次選擇*手動選擇 -> 搖桿軸*。
選擇左邊遙感的負 X 軸。
將其它值保持為預設,然後點擊 確定
備註
如果你想讓多個手柄有不同的輸入動作,你需要在額外選項中使用裝置選項。裝置 0 對應的是第一個插入的手柄,裝置 1 對應的是第二個插入的手柄,以此類推。
為其他輸入動作也執行同樣的操作。比如將右方向鍵、D、左搖桿的正軸綁定給 move_right。全部綁定完後,你的介面應該類似這樣。

最後一個動作是設定 jump 動作。綁定空白鍵和手柄的 A 鍵。

現在場景看起來會這樣:

這些就是這個遊戲所需的所有動作了。你可以使用這個功能表來對專案中的任意按鍵和按鈕組進行標記。
在下一部分,我們將為玩家的移動進行程式設計和測試。