さっき決めたブログ

[Godot Engine 002]簡単なプロジェクトを作成する

Godot Engine 関連の記事第2回目になります。
今回は簡単なプロジェクトの作成方法について、自分なりに調べた内容をまとめてみます。

プロジェクトとシーンの作成

プロジェクトの作成

最初にプロジェクトの作成を行います。

Godotを起動して出てくる最初の画面から新規プロジェクトの作成をクリックします。

初期画面

ダイアログが表示されるので、プロジェクト名、プロジェクトパスを入力します。
※プロジェクトパスは予め作成しておく必要があります。
レンダラーは、Open GL ES 3.0, 2.0 のどちらでも構いませんが、今回はデフォルト値のまま、3.0を選択した状態にしておきます。
ここまでの内容を入力し、作成して編集をクリックします。

新規プロジェクトの作成

エディターの初期画面が表示されます。

エディターの初期画面

シーンの作成

次にシーンと言われるものを作成していきます。
シーンには大きく分けて2Dシーンと3Dシーンがありますが、今回は3Dシーンを作成していきます。

初期画面のルートノードを作成と書いてあるところから3D シーンをクリックします。

3Dシーンを選択

これで、新しいシーンが作成されるます。

物体を作成する

次に、作成したシーンにノードというものを追加していきます。
初期状態では、Spatial(空間)ノードがルートノードとして設定されています。
以降の作業は、Spatialノードに子ノードを追加していくことになります。

物理ボディの追加

最初にシーン全体の床の部分となるノードを追加していきます。
子ノードを追加するため、画面左上のマークをクリックします。

シーンよりノードを追加

ノードの新規作成画面が表示されます。 Godotで使用されるノードの種類は非常に多いので、検索を行い追加したいノードを探します。 bodyのキーワードで検索を行い、出てきた結果より、StaticBodyを選択します。

Nodeを新規作成

Static Bodyノードが追加されると、画面上にこのような立方体が表示されます。

Static Bodyノードが追加

今回追加した StaticBody ですが、これは PhysicsBody(物理ボディ)と呼ばれる種類のノードで、物体の性質を表すためのノードになります。
PhysicsBodyには、以下4種類のノードがあります。

PhysicsBodyの種類
名称 説明
RigidBody 物理の影響を自動で受ける物体に使用する。
重力や衝突などの影響を受けて動く。
KinematicBody 物理の影響を自動で受けない物体に使用する。
プログラムを用いて物理の挙動や物理を無視した挙動を行うことは可能。
StaticBody 動かない物体(例えば地面や壁など)を作成する際に使用する。
PhysicalBorn すいません、勉強不足でこれについてはよくわかりません。

今回は、床の部分になるのでStaticBodyを採用しています。

コリジョンの追加

次にStaticBodyの子ノードとしてコリジョンノードを作成します。
コリジョンノードとは、物体の形状を表すためのノードになります。当たり判定エリアと言えば分かりやすいでしょうか。

画面左上のマークをクリック後、
collisionのキーワードで検索を行い、出てきた結果よりCollisionShapeを選択します。

CollisionShapeを選択

CollisionShape が追加されたら、次にシェイプの形状を設定します。

画面右のプロパティ設定より、Shapeをクリックし、出てきた一覧より新規 BoxShapeをクリックします。

新規 BoxShapeを選択

ビジュアルインスタンスの追加

ここまでで、Body(物体の性質)、Collision(物体の形状) を追加してきましたが、最後に物体の見た目である VisualInstanceノードを追加します。

多くの場合、物体の見た目に関しては Godot単体で作り込むことは難しいので、Blenderなどの3Dモデリングソフトで作成されたオブジェクトを読み込むことになるのですが、今回は簡単な立方体で全てを表現していきます。

画面左上のマークをクリック後、
CSGのキーワードで検索を行い、出てきた結果より、CSGBoxを選択します。

CSGBoxを選択

CSGBoxの Material(質感)を設定します。
Material には様々な設定項目があるのですが、今回は物体の色のみを変更します。

プロパティのMaterialをクリックして、出てきた一覧から新規 SpatialMaterialを選択します。

新規 SpatialMaterialを選択

Material の項目に現在のマテリアルの状態を表示した球体が現われるので、再度こちらをクリックし、一覧から編集を選択します。

マテリアルを編集する

先程述べた通り、今回は物体の色を変更しますので、プロパティの項目からAlbedoColorの項目をクリックすると、色選択ダイアログが表示されるので、好みの色を設定します。
(画面では緑色を選択してみました)

マテリアルの色を選択する

エディタ上の物体の色が指定した色に変更されたと思います。
(画面では物体が選択状態のため、ちょっと違う色味になってしまっています)

サイズ調整

作成した物体を床らしく平たく大きく変更します。

CollisionShape を選択肢、プロパティのTransformScaleを変更します。
※Transformプロパティは、StaticBody や CSGShape にもありますが、必ず CollisionShape の Transform を変更するようにしてください。

Scaleを変更する

これで床らしい形状になったかと思います。

他物体とカメラの追加

ここまでで、床オブジェクトの作成が完了しました。
次に、床以外の物体と、実行画面を表示するために必要なカメラを追加していきます。

他物体の追加

床以外の物体を追加していきます。
基本的な作成方法は床と同じになるので、詳細は省略していきます。

上から落ちる立方体を追加します。

床との違いは、Body に、StaticBody ではなく、RigitBody を使用しています。
(重力で上から落ちるようにしたいため)

物体についている緑の矢印をドラッグするか、
RigitBody のプロパティで、TransformTranslationのY座標を変更し、物体が上の方に持っていきます。

立方体を追加

先程作成した立方体が落下したときに滑り落ちるための台も設置します。

こちらは床と同じく StaticBody で作成します。 CollisionShape のプロパティからTransformRotation Degreesを変更し、傾きをつけます。
また、Body のプロパティで、TransformTranslationのY座標を変更し、物体が床にめり込むように調整しています。

滑り台を設置

カメラを追加する

最後にカメラを追加します。 カメラが無いと実行したときに何も表示されないので、カメラは必ず1つは追加しておく必要があります。

画面左上のマークをクリック後、
cameraのキーワードで検索を行い、出てきた結果より、Cameraを選択します。

カメラの追加

カメラの Transform プロパティを変更し、良い位置・良い角度に移動します。

編集画面の左上にあるプレビューチェックボックスをチェックすると、編集画面がカメラの視点になるので、どのように見えるかチェックしながら調整していくのが良いです。

カメラの調整

保存して実行する

ここまでで、今回やりたいことはほぼ出来ましたので、実際に動かしてみます。

保存する

これは特にやる必要はないのですが、各ノードの名称がデフォルトのままになっているので、何がどのオブジェクトなのか、わかりづらくなっています。
なので、Body ノードの名称をわかりやすく変更します。

対象のノードをクリックすることで、名前を変更することが出来ます。
日本語名称だと何かとトラブルの元にになるので、嫌う方もいるかと思いますが、今回は分かりやすさ重視で日本語名称に変更しています。

ノードの名称を変更

CTRL+Sキーを押し、
プロジェクトフォルダのルートにmain.tscnという名前で保存します。

シーンを保存

実行する

いよいよ実行になります。

プロジェクトを実行するには画面右上のボタンをクリックします。

プロジェクトの実行ボタン

初回はこのようなメッセージが表示されますので、現在のものを選択を選択します。

確認画面

新しい Window が開き、プロジェクトが実行されます。

上の方に配置した RigidBody の立方体が落下して、滑り台を滑り落ちていくのが分かると思います。
たったそれだけのプロジェクトですが、今回は最初なんで多めに見てください💦

実行画面

最後に

以上、簡単なプロジェクトの作成方法について紹介しました。
今回は最初という事もあり非常に簡単なものでありましたが、Godot でのプロジェクト作成のイメージが何となく掴めてもらえたら幸いです。
次回以降は今回作成したプロジェクトをベースに少しずつカスタマイズする方向で進めていく予定です。

サンプルダウンロード

今回作成したサンプルはGitHubに登録してあります。
https://github.com/karasu-jp-com/godot_test001

投稿者プロフィール

KARASU
うーん いろいろ考え中。。。

コメント

コメント取得中...

関連記事

TOPへ