ゲームエリアの設定

この最初のパートでは、ゲームエリアを設定します。さっそく、スタートアセットをインポートして、ゲームシーンを設定しましょう。

このチュートリアルで使用する 3D モデルとサウンドを含む Godot プロジェクトを用意し、インデックスページにリンクしています。まだの方は`Squash the Creeps assets <https://github.com/GDQuest/godot-3d-dodge-the-creeps/releases/tag/1.0.0>`からアーカイブをダウンロードしてください。

ダウンロードしたら、.zip アーカイブをコンピュータで解凍します。Godotプロジェクト・マネージャーを開き、Importボタンをクリックします。

image1

インポートポップアップで、作成したばかりのディレクトリsquash_the_creeps_start/へのフルパスを入力します。右側の 参照(Browse)ボタンをクリックしてファイル ブラウザを開き、フォルダに含まれるproject.godotファイルに移動することも可能です。

image2

インポートして編集(Install & Edit)をクリックすると、エディタのプロジェクトが開きます。

image3

スタート プロジェクトには、アイコンと 2 つのフォルダーart/fonts/があります。そこには、ゲーム内で使用するアートアセットと音楽があります。

image4

player.glbmob.glbという二つの3Dモデルとこれらのモデルに属するいくつかの素材、そして音楽トラックです。

プレイ可能エリアの設定

プレーンなNodeをルートとして、メイン シーンを作成します。シーン(Scene)ドックで、左上の "+" で表される 子ノードを追加(Add Node)ボタンをクリックして、 Nodeをダブルクリックします。このノードに "Main"という名前を付けます。また、ノードをシーンに追加するには、 Ctrl + a (macOSでは Cmd + a) を押すことも可能です。

image5

シーンをMain.tscnとして保存します。 Ctrl + s (macOS では Cmd + s) を押してしてください。

まず、キャラクターの落下を防ぐための床を追加します。床、壁、天井のような静的な衝突物(コライダー"collider")を作成するには、StaticBodyノードを使用することができます。これらは、衝突領域を定義するために CollisionShape子ノードを必要とします。Mainノードを選択し、StaticBodyノード、CollisionShapeを追加してください。そしてStaticBodyの名前をGroundに変更します。

\ image6

CollisionShapeの横に警告サインが表示されているのは、その形状を定義していないためです。このアイコンをクリックすると、詳細情報を提供するポップアップが表示されます。

\ image7

シェイプを作成するには、CollisionShapeを選択して、インスペクター(Inspector)に移動し、Shapeプロパティの隣にある[空]([empty])フィールドをクリックします。新規Box Shapeを作成します。

\ image8

ボックスの形状は、平らな地面や壁に最適です。その厚さによって、動きの速い物体でも確実にブロックできます。

ボックスのワイヤフレームが、ビューポートに3つのオレンジ色の点で表示されます。これらをクリック&ドラッグして、形状の大きさをインタラクティブに編集できます。また、インスペクタでサイズを正確に設定することもできます。BoxShapeをクリックし、リソースを展開します。その Extents で X 軸に 30、Y軸に1、Z軸に30を指定します。

\ image9

注釈

3Dでは、移動とサイズの単位はメートルです。ボックスの合計サイズは、その範囲の 2 倍です。地面の平面は60メートル掛ける60メートルで、高さは2メートルです。地面の平面はX軸とZ軸で定義され、Y軸は高さを表します。

衝突形状は目に見えません。それに付随する視覚的な床を追加する必要があります。Groundノードを選択し、MeshInstanceをその子として追加してください。

\ image10

インスペクター(Inspector)で、Meshの隣のフィールドをクリックし、CubeMeshリソースで可視キューブを作成します。

\ image11

もう一度言いますが、デフォルトでは小さすぎます。キューブ アイコンをクリックしてリソースを展開し、Size60260にします。キューブ リソースは extents ではなく size で動作するため、これらの値を使用して、コリジョン形状に一致させる必要があります。

\ image12

ビューポートにグリッドを覆う広い灰色の壁と、青と赤の軸が表示されるはずです。

床のグリッドを見ることができるように、地面を下に移動させます。Groundノードを選択し、 Ctrl キーを押しながらグリッド スナップをオンにして (macOS では Cmd) 、Y 軸をクリックして下にドラッグしてください。移動ギズモにある緑色の矢印がそれです。

\ image13

注釈

上の画像のように 3D オブジェクト マニピュレーターが表示されない場合は、ビューの上のツールバーで 選択モード(Select Mode) がアクティブになっていることを確認してください。

\ image14

地面を1メートル下に移動させます。ビューポートの左下隅にあるラベルは、ノードをどれだけ平行移動させたかを示しています。

\ image15

注釈

Groundノードを下に動かすと、両方の子ノードも一緒に移動します。MeshInstanceまたは CollisionShapeではなくGroundノードを移動していることを確認してください。

指向性ライト(directional light)を追加して、シーンがグレー一色にならないようにしましょう。Mainノードを選択し、DirectionalLightをその子として追加してください。これを移動と回転させる必要があります。マニピュレーターの緑の矢印をクリック&ドラッグして上に移動し、赤い円弧をクリック&ドラッグしてX軸を中心に回転させ、地面が照らされるようにします。

インスペクター(Inspector)で、Shadow -> Enabledにチェックを入れて、オンにします。

\ image16

ここまでで、プロジェクトは次のようになっているはずです。

\ image17

これが出発点になります。次のパートでは、プレイヤーのシーンとベースの動きを作ります。