はじめに
GDevelopに3D作成機能が本格実装されたのは2023年5月19日のv5.1.162からです。
Release 5.1.162 · 4ian/GDevelop
🎁 Create 3D games with GDevelop
You can now create 3D games with GDevelop: from classic 2D games with 3D elements to full 3D games. This is only the beginning, and many more game engine and editor ...
それまでも擬似的な3Dゲームは作成できましたが、フル3Dを作成できるようになったのはこのバージョンからです。
まだ実装から1年未満(執筆時の2024年3月18日時点で)の比較的新しい機能で、現在もアップデートのたびに改善が続いている発展途上の機能です。
それでも、クラッシックな3Dゲームを作成するにはじゅうぶんな機能はすでに揃っています。
3Dゲーム作成機能は、いち早くPANDAKOさんが拡張機能として公開していました。
WithThreeJS Extension for GDevelop by PANDAKO
Extension for GDevelop to create simple 3D scenes.
現在も3D機能周囲のアップデートにはPANDAKOさんが貢献しており、アップデートのContributors(貢献者)にそのお名前が記載されています。
PANDAKOさんは、3D機能以外にも「Mouse pointer lock」や「Online Multiplayer
Extension」や日本語への翻訳サポートなどさまざまな形で貢献なさっていて、日本人唯一のGDevelop公認アドボケイトです。
GDevelop 無料ゲーム制作ツールを使い倒す Blog
GDevelop
はオープンソースでクロスプラットフォームなゲームエンジンです。
なお、このブログは GDevelop
が好きなだけの全然無関係の人が勝手に書いてる非公式サイトです🤤
私もPANDAKOさんには
GDevelop公式Discordでお世話になっています。
そんなPANDAKOさんが玄人向けに技術サポートをする一方、私はビギナーさん向けに今回3D機能のサポートをしていきたいとおもいます。
1.オブジェクトの作成
というわけでGDevelopの3D機能をご紹介していきます。
まず最初に、プレイヤーとなるオブジェクトを作成しましょう。
オブジェクトには『3Dボックス』を使用します。
つぎは、床、壁、天井に使う3Dボックスを作成します。
今回使用するオブジェクトは以上です。
2.拡張機能の追加
今回使用する拡張機能は4つです。
以下の拡張機能を追加します。
- Walk3D:移動用のエクステンション
- Jump3D:ジャンプ用のエクステンション
- FirstPersonCamera:1人称カメラ用のエクステンション
- MousePointerLock:視点移動用のエクステンション
Playerのビヘイビアに、Walk3DとJump3Dを追加します。
3.ベースシステム
ここからはイベントを編集していきます。
イベントエディタを開いて最初のイベントを追加します。
Escキーを使ってゲームを終了させることができるようにします。
Escape キーを離した
ゲームを終了する
拡張機能「MousePointerLock」によってマウス操作による視点の移動を可能にするイベントを作成します。
まず、MousePointerLockを有効にするイベントを作成します。
・条件
(反転)The mouse pointer is locked
マウスの Left ボタンを離した直後
・アクション
Request Pointer Lock
つぎに、マウスの動きによって視点を動かすイベントを作成します
・条件
The mouse pointer is locked
・アクション
Player の角度を変更する: MousePointerLock::MovementX()/20 を加算
Player のY軸上の回転を変更する: MousePointerLock::MovementY()/20 を加算
数式エディタでマウスのX軸の動きの式を呼び出し、20で割ります。
Y軸の動きも同様に20で割ります。
角度は左右、Y軸上の回転は上下の視点移動になります。
今はまだカメラの視点はトップダウンの状態なので、Playerの視点に固定するイベントを追加します。
- 無条件 -
Move the camera of ベースレイヤー
to look through Player eyes
視点が低いので高さをPlayerの深度に合わせて調整します。
- 無条件 -
Z軸のカメラ座標を変更する: Player.Object3D::Depth() を加算
上下の視点移動で、一回転してしまうのを防ぐために上下90度で角度を制限します。
- 無条件 - Player のY軸上の回転を変更する: clamp(Player.Object3D::RotationY(),-90,90) を代入
トップダウンやプラットフォーマー同様に、Playerが障害物を通り抜けないように分離します。
- 無条件 -
Separate Player
from platform Wall
基本的なシステムは以上となります。
4.キーによる操作
w,s,a,dキー、またはUp,Down,Left,Rightキーを押したときに前後左右の移動をシミュレートさせます。
Up キーを押している
Simulate pressing move forward key for Player
これと同様に後と左右の移動もシミュレートさせます。
スペースキーを押したときにジャンプさせるイベントも追加します。
Space
キーを押している Simulate pressing jump key for Player
5.プロジェクトファイル
こちらから本チュートリアルで使用したプロジェクトファイルをダウンロードできます。
おわりに
今回、Vol.1ではここまでとなります。
このつづきをお読みになられたい場合は、ページ下部の5段階評価で高評価をおねがいします。
いつも更新ありがとうございます。日本語での基礎や応用の解説、とても分かりやすくサポートされていて非常に参考になります。すぐに実践で活かせて少しづつスキルアップを実感できる、こんなに心強いことはないです。
返信削除ご無理なさらずにご自分のペースで更新していただけるだけでうれしいです。
コメントありがとうございます!
削除これからも、皆様のご期待に添えるように励んでまいりたいとおもいます。
応援と労いのお言葉をいただき、深く感謝申し上げます。
今後ともよろしくおねがいいたします!