Godotを初めて触ってみた|ダウンロードから物理挙動の実験まで

GodotでRigidBody2Dを落下させ、CollisionShape2DとStaticBody2Dの衝突を試す初心者向け図解 個人ゲーム開発
Godot初体験:落下・衝突・回転を実際に試した記録

Godotをダウンロードし、初めてプロジェクトを作成してみました。

今回行ったのは、単なるインストール確認だけではありません。2D画面で画像を表示し、RigidBody2Dで落下させ、StaticBody2Dに衝突させるところまで、実際に操作しながら試しています。

途中では、回転させる対象を間違えて期待した動きにならない場面もありました。この記事では、うまくいった操作だけでなく、私が迷ったところや失敗したところも含めて記録します。

実際の操作は12分20秒のフルテロップ動画にまとめています。

今回試したこと

今回の動画では、次の順番でGodotに触れています。

  1. Godotをダウンロードする
  2. Godotを起動する
  3. 新しいプロジェクトを作成する
  4. 2D編集画面を確認する
  5. icon.svgを配置する
  6. 作成した画面を実行する
  7. RigidBody2Dを追加する
  8. CollisionShape2Dで当たり判定を設定する
  9. Gravity Scaleを変更する
  10. StaticBody2Dに衝突させる
  11. 回転による物理挙動の変化を試す

Godotの操作にまだ慣れていない状態から始め、最終的には画像が重力で落下し、床にぶつかる動作まで確認できました。

Godotをダウンロードして起動する

最初にブラウザーで「Godot」と検索し、公式サイトのダウンロードページを開きました。「最新版をダウンロード」からファイルを取得します。

ダウンロードページでは寄付に関する案内も表示されました。興味がある場合は、Godotの開発支援を検討できます。

取得したファイルを開くと複数のファイルが入っていました。今回使用したのはGodot 4.7.2のゲームエンジン本体です。実行ファイルをダブルクリックすると、プロジェクト一覧が表示されました。

初めてのプロジェクトを作成する

左上の「作成」ボタンを押し、新しいプロジェクトを作りました。プロジェクト名と保存場所を入力し、レンダラーを選択します。

私は普段使用するGodot用フォルダーを保存先として決めています。プロジェクトが増えても探しやすいよう、専用フォルダーを用意しておくと管理しやすそうです。

Forward+を選んだ理由

画面にはForward+やMobileなどのレンダラーが表示されました。今回は、Forward+は主にパソコン向け、Mobileは主にスマートフォン向けと考え、パソコン上で試すためForward+を選択しました。

制作するゲームや対象端末によって適切な選択は変わるため、これは今回の目的に合わせた判断です。

最初に表示された3D画面から2Dへ切り替える

プロジェクトを開くと、最初は3Dゲームを制作するような画面が表示されました。今回は2Dで試すため、画面上部の「2D」を選択しました。

画面上部には2D、3D、スクリプト、ゲーム、Asset Libraryなどの切り替えがあります。左側には「シーン」や「インポート」、右側には「インスペクター」がありました。

特にインスペクターは、ノードのパラメーターを変更するときに何度も使いました。

2DシーンへGodotアイコンを配置する

「2Dシーン」ボタンを押すと、シーンツリーにNode2Dが追加されました。

プロジェクトには、最初からicon.svgという画像が入っています。これを2D画面へドラッグ&ドロップすると、画面上にGodotのアイコンが表示され、Node2Dの子としてSprite2Dが追加されました。

Godotでは、このようなノードを組み合わせてゲームの構造を作っていくようです。

最初のシーンを保存して実行する

画面右上の再生ボタンを押し、「現在のもの」を選択しました。シーンへ名前を付けて保存すると、ゲーム画面が起動し、配置したアイコンが表示されました。

まだ画像が一つあるだけですが、自分で配置したものが別ウィンドウで実行され、「ここがゲーム画面になるのか」と実感できました。

RigidBody2Dを追加する

次に、画像を物理的に動かすためRigidBody2Dを追加しました。一覧で見つからない場合は、検索欄へ「Rigid」と入力して探せます。

ノードはドラッグ&ドロップで順番や親子関係を変更できました。この親子関係によって、位置や回転などの影響の受け方も変わります。

私もすべてのノードを覚えているわけではありません。必要になったものを検索しながら、少しずつ慣れていく方法でよいのだと思います。

警告を読んでCollisionShape2Dを追加する

RigidBody2Dを追加すると警告マークが表示されました。内容を確認すると、使用するにはCollisionShape2Dなどの当たり判定が必要だと分かりました。

そこで、RigidBody2Dの子としてCollisionShape2Dを追加します。今度は、当たり判定に使用する形状が設定されていないという警告が表示されました。

Godotで警告が出た場合は、無視せず内容を読むことが大切です。次に設定すべきことが、そのまま書かれている場合があります。

RectangleShape2Dで当たり判定を作る

CollisionShape2Dを選択し、インスペクターの「Shape」へ長方形のRectangleShape2Dを設定しました。

形状を設定すると警告が消えます。続いて、当たり判定の大きさをGodotアイコンと同じくらいに調整しました。

CollisionShape2Dは、ゲーム内の当たり判定に使われる重要なノードです。見た目の画像と形状がずれていると、不自然な位置で衝突してしまいます。

アイコンが重力で落下した

Sprite2DとCollisionShape2DをRigidBody2Dの子として配置し、ゲームを実行しました。

すると、Godotのアイコンが重力に従って画面下へ落下しました。親子関係を変更したことで、静止していた画像が突然動き始めたのが印象的でした。

Gravity Scaleを0.006にしてみる

RigidBody2DにはGravity Scaleという項目があります。試しに値を0.006まで下げると、アイコンは非常にゆっくり落下するようになりました。

同じノードでも、パラメーターを変えるだけで動きの印象が大きく変わります。弱い重力や、ゆっくり落下する演出などにも応用できそうです。

StaticBody2Dで床を作る

落下するだけでは画面外へ消えてしまうため、StaticBody2Dを追加しました。StaticBody2DにもCollisionShape2Dを子として追加し、RectangleShape2Dを横長に広げて床のような形にします。

ゲームを実行すると、落下したアイコンがStaticBody2Dへ衝突し、その場で止まりました。両方がCollisionShape2Dを持っているため衝突を判定できたのだと、現時点では理解しています。

透明な床へ見た目を追加する

最初に作成したStaticBody2Dには画像がなく、透明な壁にぶつかっているように見えました。

そこで、StaticBody2Dの子にSprite2Dを追加し、Textureへ画像を設定しました。これにより、何にぶつかって止まったのかを画面上でも確認しやすくなりました。

この操作から、画面上の見た目と当たり判定は別々に管理されていることが分かります。

見た目だけを回転させて失敗した

最後に、床を斜めにして、衝突したアイコンの軌道を左へ変えてみることにしました。

最初は床の画像だけを回転させて実行しました。しかし、期待していたように跳ねず、アイコンが不自然に刺さったような状態になりました。

原因は、見た目となるSprite2Dだけを回転させ、CollisionShape2Dを回転させていなかったことでした。画面では床が斜めでも、実際の当たり判定は元の向きのままだったのです。

見た目と当たり判定を一緒に回転させる

見た目と当たり判定を一致させるため、親ノード側のRotationを変更しました。

もう一度実行すると、アイコンは斜めの面へ衝突し、少し左へ軌道を変えました。

この失敗から、次のことを体験として学びました。

  • Sprite2Dは見た目を担当する
  • CollisionShape2Dは当たり判定を担当する
  • 見た目だけを回転させても当たり判定は変わらない
  • 親側を回転させると、子の見た目と当たり判定を一緒に動かせる

成功した手順だけを見るより、一度間違えたことでノードの役割を理解しやすくなりました。

今回の操作結果

操作実際に起きたこと
icon.svgを配置Sprite2Dとして画面に表示された
RigidBody2Dの子にするアイコンが重力で落下した
Gravity Scaleを0.006にする非常にゆっくり落下した
StaticBody2Dを配置落下したアイコンが床で止まった
Sprite2Dだけを回転見た目と当たり判定がずれた
親側を回転見た目と当たり判定が一緒に傾いた
再度実行衝突後の軌道が左へ変化した

実際の操作は動画で確認できます

この記事で紹介した操作は、12分20秒の動画にすべて収録しています。

ダウンロード、プロジェクト作成、2D画面の操作、RigidBody2Dの落下、StaticBody2Dとの衝突まで、フルテロップ付きで確認できます。途中で操作を間違え、原因を考えて修正する場面もそのまま残しています。

まとめ

今回は、Godotのダウンロードから始め、2Dシーンの作成、画像表示、重力による落下、当たり判定、床との衝突、回転による軌道変化まで試しました。

まだゲームと呼べる段階ではありませんが、ノードの組み合わせとパラメーター調整によって動きが変わることを体験できました。

特に、画像だけを回転させて当たり判定とずれてしまった失敗は、Godotの仕組みを理解するうえで役立ちました。

私自身もまだ勉強中です。分からないノードは必要になったときに一つずつ調べ、実際に動かしながら理解していきたいと思います。

関連ノード

この記事で使用した主なノードの詳しい使い方は、以下の記事で解説しています。

コメント