動画でもやりましたが、GodotEngineを使った3Dゲームの作り方メモです
今回はGodotEngineで3Dキャラを追加して
ワールドに配置・動かすところまでをやっていきましょう

3Dモデルはいろんな素材がありますが
用意するのも大変なのでBlockbenchで簡単に作った
ロジラボ君を使って解説します
pgp_682


動画ではSophiaちゃんというかわいいモデルを使ってます
https://youtu.be/r6raVUBwlDc?feature=shared


↓↓続きを読む↓↓ をご覧ください 
 
にほんブログ村 IT技術ブログ ゲーム開発へ

プロジェクトを作ろう

プロジェクトを作る前に
プロジェクトを保存するフォルダを作っておきます。

pgp_683
フォルダを作ったときに フォルダのパスをコピーしておきましょう。

つぎにGodotEngineを起動します。
Godotはインストール不要でいきなり使うことができるので
ダウンロードして解凍したフォルダにある
「Godot_v4.1.1-stable_win64.exe」みたいなファイルを起動しましょう。

「新規プロジェクト」をクリックします
pgp_677

プロジェクト名や保存先をえらびます。
ここでさっきコピーしておいたパスを貼り付けると
プロジェクト名も勝手につけてくれます。

pgp_678

プロジェクト名は好きに変更してOK
「作成して編集」をクリックします。

メインシーンを作ろう

まずは地面などを作って、キャラを置けるようにしましょう。
「その他のノード」をクリックします。

pgp_679

ノードを選択して追加するウィンドウが開きます。
一番上の「Node」をクリックします。
pgp_680

Unityでいうところの、「空のオブジェクト」ってカンジで
いろんなノードをまとめるためにつかいます。

地面を追加しよう

追加した「Node」はF2キーで名前の変更ができます。
ここでは「Main」という名前にしました。
左上の「+」をクリックするか
Mainノードを選択した状態で「Ctrl+A」を押すと
子ノードが追加できます。

pgp_681

ノードはたくさんあるので
ジャンル別に探すか、検索を使います。
検索窓に「static」と入力し、「StaticBody3D」をえらびます。

pgp_684

StaticBody3Dはその名の通り、Static(静的)なモノ
動かない物を作る時に使います。

つぎに地面の見た目を作りましょう。
StaticBody3Dを選択した状態で「+」アイコンをクリックします。
pgp_685

検索窓に「mesh」と入力し「MeshInstance3D」を選択します
pgp_686

メッシュは3Dの見た目のことですね
追加しても何も出てきません。メッシュの形を設定しましょう。

「MeshInstance3D」をえらび
右側のインスペクターから「Mesh<空>」をクリックします。
リストの中から「新規BoxMesh」をえらびましょう。
pgp_687


ステージにキューブがでてきました!
キューブの大きさを変えたいので、Mesh欄にある箱をクリックしましょう。

pgp_688

Meshをクリックすると設定が開きます。
Sizeを「x50:y1:z50」にしました。(値は自由に変更してOK)
pgp_689

地面にテクスチャをはろう

地面が単色だと、キャラの動きが分かりづらいので
なにかテクスチャをはっておきましょう。
今回はこれをつかいました→tileset_0331

プロジェクトを保存してあるフォルダに
「texture」フォルダを作り、草のテクスチャを入れておきます。

pgp_692
Meshの詳細にある
「Material<空>」をクリックし
新規StandardMaterial3Dをえらびます。


pgp_690

これでメッシュにマテリアルがつきました。
もういちどMaterialのまるいところをクリックします。
pgp_691

Materialの設定を開いたら
「Albedo」の項目を開き、Textureに
さっき保存しておいた画像をドラッグします。

pgp_693

このままだと全体が緑色で、テクスチャがよくわからないので
Materialの下の方にある「UV1」の項目を開き
「Triplanar」をオンにします。

「Scale」の値を変更すると、テクスチャの細かさが変えられます。

pgp_694

地面にコライダーをつけよう

このままだと、キャラクターをおいた時に
キャラが地面をつきぬけて落ちてしまうので
コライダー(当たり判定用のわく)をつけましょう

「StaticBody3D」を選択し「+」をクリックします。
pgp_695

検索窓に「collision」と入力し「CollisionShape3D」をえらびましょう。

pgp_696

CollisionShape3Dは当たり判定の大きさをきめるためのノードです。
CollisionShape3Dをえらんで、「Shape<空>」をクリックし
新規BoxShape3Dをクリックします。

pgp_697

当たり判定は地面と同じ大きさにしましょう。
ここではSize「x50,y1,z50」にしました
pgp_698

※Collisionのサイズを変えるときは「Shape」のサイズを変えましょう。
Transformでサイズを変えるとうまくいかないことがあるらしいです。


StaticBody3Dだと分かりづらいので、F2キーで分かりやすい名前にしておきます。
さいごに「Ctrl+S」で保存しておきましょう。

pgp_701

今作ったシーンを保存します。名前はなんでもOKです。
pgp_702

Blockbenchからもってくる

次にキャラクターを用意しましょう。
3Dモデルはなんでもいいですが
今回はキューブを組み合わせてキャラを作れる
Blockbenchを使いました。

頭・胴・手・足の6つのキューブで完成!
File → Export → Export glTF Model をえらんでエクスポートします。
pgp_699

エクスポートのオプションはこんな感じにしました。
「ExportAnimations」にチェックを入れておけば
Blockbenchでつけたアニメーションも一緒にGodotEngineにもっていけます
ExportGroups…のチェックは外したままのほうがいいかもです
(外しておいたほうがあとでGodot側でアニメーションの編集ができる)
pgp_705


できたファイルは、プロジェクトフォルダに保存しましょう。
今回は「model」フォルダを作り、その中に保存しました。
pgp_703

フォルダにいれると自動でインポートしてくれます

キャラを動かせるようにしよう

木や家など動かないものなら、継承シーンを作らずに
いきなりメインシーンにgltfファイルをドラッグすれば配置できますが

キャラを動かしたりアニメーションさせたりしたいので
プレイヤー用のシーンを作りましょう。

ロジラボ君.gltfファイルを右クリックして
「新しい継承シーン」をえらびましょう。

pgp_704

logiclab-kunだと長いので「Player」という名前にしました。
「Ctrl+S」でシーンを保存します
pgp_711

ちなみにBlockbenchでモデルを作る時
当たり判定がほしい部分パーツの
名前の後ろに「-col」をつけておくと、インポートするときに
自動でCollisionShape3Dをつけてくれます。
(キャラクターにはいらないかもですが)
pgp_708

メインシーンにプレイヤーを配置しよう

タブから「main」をクリックしてメインシーンに戻ります。
ファイルの中から「player.tscn」を選び、ステージにドラッグしましょう。

pgp_697

これでプレイヤーをメインシーンに追加することができました。
ドラッグする以外にも
「シーン」タブの「+」アイコンの横にある「🔗」みたいなアイコンを
クリックすることでもシーンを追加することができます。

再生ボタンを押して実行してみましょう。
現在のシーンをメインシーン(はじめに再生したいシーン)にしておきます。
pgp_698

再生すると、灰色の画面になってしまいました。
2Dゲームと違って、3Dの場合はカメラが必要です。

ゲームを終了して、カメラを追加しましょう。
Mainノードを選択し「+」ボタンをクリックします。
cameraと検索し、「Camera3D」を選びます。
pgp_700

メインシーンにカメラが追加されました。
Camera3Dを選択すると、カメラを移動するためのギズモが出るので
矢印やわっかを動かして、カメラの位置を調節します。
また、インスペクターからTransformの値を直接変更してもOKです
pgp_699

カメラを選択している間は、「プレビュー」アイコンが表示されます。
プレビューにチェックを入れると、カメラからみた映像をチェックできます。

pgp_701

ライティングを設定しよう

再生してみると、画面がまっくらになっています。
これは明かりがないからです。 3Dゲームを作るときには、
カメラの他にライティングも必要になります。

pgp_702

再生しているゲームを閉じて、
シーンビューの上にある「…」のアイコンをクリックしましょう
太陽の方向や色・空の色・地面の色などが設定できるウィンドウがひらきます。
pgp_703

ここから「太陽をシーンに追加」と「環境をシーンに追加」
のボタンをクリックしましょう。
シーンに現在の設定の太陽と環境が追加されました。

pgp_704

いちおうここまでで
Blockbenchからキャラクターを持ってくるのと
メインシーンを作って、キャラクターを配置する
ところまでができましたね

pgp_706

次回はこのキャラクターを歩かせたり
キャラクターにカメラがついてくるようにプログラムしていきましょう