設定遊戲區域

在第一部分中,我們將設定遊戲區域。讓我們從匯入初始素材、設定遊戲場景入手。

We've prepared a Godot project with the 3D models and sounds we'll use for this tutorial, linked in the index page. If you haven't done so yet, you can download the archive here: Squash the Creeps assets.

一旦下在完成,解壓縮到任意處,然後打開 Godot 並在專案管理員裡點擊 [匯入] 按鈕來新增該專案。

../../_images/01.import_button.webp

In the import popup, enter the full path to the freshly created directory 3d_squash_the_creeps_starter/. You can click the Browse button on the right to open a file browser and navigate to the project.godot file the folder contains.

../../_images/02.browse_to_project_folder.webp

Click Import to open the project in the editor.

../../_images/03.import_and_edit.webp

可能會出現一個視窗通知您專案是由較舊的 Godot 版本產生的。點擊「轉換完整專案」以將專案轉換為您目前的 Godot 版本。

../../_images/import_project_to_4.x_prompt.webp

If it doesn't open immediately open the project from your project list.

起始專案中包含一個圖示和兩個資料夾:art/fonts/。你可以在裡面找到遊戲中我們會用到的藝術素材和音樂。

../../_images/04.start_assets.webp

裡面有兩個 3D 模型,player.glbmob.glb,一些模型使用的材質,以及一首音樂。

設定建置系統

我們將建立我們的主要場景,並以一個純粹的 Node 作為它的根節點。在 場景 面板中,點擊位於左上角、以「+」圖示表示的 新增子節點 按鈕,然後雙擊 Node。將該節點命名為 Main 。另一種重新命名節點的方法是右鍵點擊 Node 並選擇 重新命名 (或按下 F2)。或者,要新增節點到場景中,您可以按下 Ctrl + A`(macOS 上是 :kbd:`Cmd + A)。

../../_images/05.main_node.webp

按下 Ctrl + S (macOS 請按 Cmd + S) 將場景儲存為 main.tscn

我們先新增一個地板,以防止角色掉落。要建立地板、牆壁或天花板等靜態碰撞器,可以使用 StaticBody3D 節點。它們需要 CollisionShape3D 子節點來定義碰撞區域。選擇 Main 節點後,新增 StaticBody3D 節點,然後新增 CollisionShape3D。將 StaticBody3D 重命名為 Ground

../../_images/adding_static_body3D.webp

現在場景看起來會這樣:

../../_images/06.staticbody_node.webp

CollisionShape3D 旁邊會出現一個警告旗標,因為我們還沒有定義它的形狀。如果你點擊這個圖示,就會彈出一個視窗,為你提供更多資訊。

../../_images/07.collision_shape_warning.webp

要建立形狀,請選中 CollisionShape3D,轉到*屬性檢視器*,然後按一下 Shape*(形狀)屬性旁邊的 *<空> 欄位。建立一個新的 BoxShape3D

../../_images/08.create_box_shape3D.webp

盒子形狀非常適合平坦的地面和牆壁。它的厚度使它能夠可靠地阻擋甚至快速移動的物體。

一個立方體的線框會在視埠中出現,並帶有三個橘色點。您可以點擊並拖曳這些點來互動式地編輯形狀的範圍。我們也可以在屬性檢視器中精確地設定尺寸。點擊 BoxShape3D 以展開資源。將其 Size 的 X 軸設為 60 ,Y 軸設為 2 ,Z 軸設為 60

../../_images/09.box_size.webp

碰撞形狀是不可見的。我們需要新增一個與之配套的視覺層。選擇 Ground 節點並新增一個 MeshInstance3D 作為其子節點。

../../_images/10.mesh_instance3d.webp

屬性面板*(Inspector)中,點擊 *Mesh 旁的欄位,建立一個 BoxMesh 資源,產生一個可見的立方體。

../../_images/11.box_mesh.webp

再次設定大小,對於預設值來說它有點太小了。點擊立方體圖示展開資源,並將其 Size 設定為 60260。由於立方體資源使用的是大小(size)而不是範圍(extents),我們需要使用這些值,以便它與我們的碰撞形狀相配對。

../../_images/12.cube_resized.webp

您應該會在視口中看到一個覆蓋網格以及藍色和紅色軸的寬灰色平板。

我們要把地面往下移動,這樣才能看到地板網格。要做到這一點,可以使用網格吸附功能。在 3D 編輯器中,有兩種方式可以啟用網格吸附。第一種是按下「使用吸附」按鈕(或按下 Y 鍵)。第二種是選取一個節點,拖曳變形控制器的控制柄, 然後 在按住滑鼠的同時按住 Ctrl 鍵,只要 Ctrl 鍵持續按住,就會啟用吸附功能。

../../_images/use_snap.webp

首先,使用您偏好的方式設定 吸附 。然後使用 Y 軸(場景編輯器上的綠色箭頭)移動 Ground 節點。

../../_images/move_gizmo_y_axis.webp

備註

如果你沒有看到如上圖所示的 3D 物件操作器,請確保已啟動視圖上方工具列中的*選擇模式*。

../../_images/14.select_mode_icon.webp

為了有一個可見的編輯器柵格,可以將地面往下移動 1 米。視口左下角的標籤會顯示你將該節點平移了多遠。

../../_images/15.translation_amount.png

備註

子節點會跟隨 Ground 節點一起往下移動。請確保你移動的是 Ground 節點,而不是 MeshInstance3DCollisionShape3D

最終,Ground 的 transform.position.y 應當是 -1

../../_images/ground_down1meter.webp

現在來新增一個平行光,從而讓我們的整個場景不全都是灰色的。選擇 Main 節點,然後新增一個子節點 DirectionalLight3D

../../_images/create_directional_light3d.webp

我們需要移動並旋轉 DirectionalLight3D 節點。點擊並拖曳操作器的綠色箭頭將其向上移動,然後點擊並拖曳紅色弧線以繞 X 軸旋轉,直到地面被照亮為止。

在*屬性檢視器*中,勾選核取方塊打開*Shadow -> Enabled*。

../../_images/16.turn_on_shadows.webp

此時你的專案應該會長這樣。

../../_images/17.project_with_light.webp

這就是我們的起點了。在下一部分中,我們將處理玩家場景與基礎移動。