プレイヤーシーンと入力アクション¶
次の2つのレッスンでは、プレイヤーのシーンをデザインし、カスタム入力アクションを登録し、プレイヤーの動きをコーディングします。最後には、8方向に動くプレイ可能なキャラクターが完成します。
左上のシーンメニューからNew Scene(新規シーン)をクリックし、新しいシーンを作成します。ルートとしてKinematicBodyノードを作成し、Playerという名前を付けます。
キネマティックボディは、2D ゲームのチュートリアルで使用したエリアとリジッドボディを補完するものです。リジッドボディと同じように、移動して環境と衝突することができますが、物理エンジンによって制御されるのではなく、あなたがその動きを指示します。このノードのユニークな機能を、ジャンプとスクワッシュの動作のコーディングで見ていきます。
参考
さまざまな物理ノードの種類についての詳細は、 物理の紹介 を参照してください。
とりあえず、キャラクタの3D モデルに対して基本的なリグを作成します。これによって、後でアニメーションを再生しながら、コードを使用してモデルを回転させることができます。
Spatialノードを Playerの子として追加し、Pivotという名前に変更します。次に、ファイルシステム(FileSystem) ドックで、art/
フォルダをダブルクリックして展開し、player.glb
をPivotノードにドラッグ アンド ドロップしてください。
これで、Pivotの子としてモデルがインスタンス化されるはずです。これをCharacterにリネームすることができます。
注釈
.glb
ファイルは、オープンソースの GLTF 2.0 仕様に基づく 3D シーン データを含んでいます。これは、FBX のような独自のフォーマットに代わる、現代的で強力なフォーマットで、Godot もこれをサポートしています。これらのファイルを作成するために、Blender 3Dでモデルを設計し、それを GLTF にエクスポートしました。
あらゆる種類の物理ノードと同様に、キャラクターが環境と衝突するためのコリジョン形状が必要です。Playerノードを再度選択し、CollisionShapeを追加してください。インスペクター(Inspector)で、SphereShapeをShapeのプロパティに代入します。球体のワイヤーフレームが、キャラクターの下に表示されます。
これは、物理エンジンが環境と衝突するときに使用する形状になります。なので、3D モデルにうまくフィットするようにします。ビューポートでオレンジ色のドットをドラッグして、少し縮小してください。私の球体の半径は、0.8
メートルほどです。
次に、この形状を上に移動して、その底がグリッドの平面とほぼ一致するようにします。
モデルの可視性を切り替えるには、CharacterノードまたはPivotノードの横にある目のアイコンをクリックします。
Player.tscn
という名前でシーンを保存します。
ノードの準備ができたので、ほとんどコーディングできるようになりました。しかしその前に、いくつかの入力アクションを定義する必要があります。
入力アクションの作成¶
キャラクターを動かすために、矢印キーを押した、などのようなプレイヤーの入力操作を認識する必要があります。Godotでは、全てのキーバインドをコードで書くこともできますが、キーやボタンのセットに操作のラベルを割り当てられる便利な機能があります。この機能により、スクリプトをよりシンプルで読みやすくすることができます。
このシステムが「インプットマップ」です。そのエディターにアクセスするには、プロジェクト(Project)メニューから、プロジェクト設定...(Project Settings...)を選択してください。
上部に、複数のタブがあります。インプットマップ(Input Map)をクリックします。このウィンドウでは、上部で新しいアクションを追加することができます。それらはあなたのラベルです。下部では、これらのアクションにキーをバインドすることができます。
Godotプロジェクトは、ユーザーインターフェイス設計のために設計された定義済みのアクションがいくつか用意されており、ここでそれを使うこともできます。しかし、ゲームパッドをサポートするために、私たちは独自のアクションを定義しています。
私たちはアクションに、move_left
、move_right
、move_forward
、move_back
、 そして jump
という名前をつけたいと思います。
アクションを追加するには、上部のバーに名前を記入して、Enterキーを押します。
5つのアクションを作成します。ウィンドウの下部に、これらのアクションがすべて表示されるはずです。
キーやボタンをアクションに紐づけるには、その右側にある "+" ボタンをクリックします。move_left
に対してこの操作を行い、ドロップダウンメニューでキー(Key)をクリックします。
このオプションは、キーボード入力を追加することができます。ポップアップが表示され、キーが押されるのを待ちます。左矢印キーを押して、OKをクリックします。
Aキーについても同様にします。
次に、ゲームパッドの左ジョイスティックのサポートを追加しましょう。もう一度 "+" ボタンをクリックしますが、今度は ゲームパッドの方向キー/スティック(Joy Axis)を選択します。
ポップアップでは、2つのドロップダウンメニューが表示されます。左側では、インデックスでゲームパッドを選択します。Device 0は最初に接続されたゲームパッドに対応し、Device 1 は 2 番目に対応し、以下同様です。右側の入力アクションにバインドするジョイスティックと方向を選択します。デフォルトのまま、*追加*(Add)ボタンを押します。
他の入力アクションも同じようにします。たとえば、右矢印、D、左ジョイスティックの右軸を move_right
にバインドします。すべてのキーをバインドすると、インターフェイスは次のようになります。
jump
アクションの設定が残っています。SpaceキーとゲームパッドのAボタンをバインドします。ゲームパッドのボタンをバインドするには、メニューからゲームパッドのボタン(Joy Button)オプションを選択します。
初期値のままで、追加(Add) ボタンをクリックします。
ジャンプ入力のアクションはこのようになるはずです。
これで、このゲームに必要なアクションが用意できました。このメニューを使って、プロジェクト内のキーやボタンのグループにラベルを付けることができます。
次のパートでは、プレーヤーの動きをコーディングしてテストしていきます。