プレイヤーシーンと入力アクション

次の2つのレッスンでは、プレイヤーのシーンをデザインし、カスタム入力アクションを登録し、プレイヤーの動きをコーディングします。最後には、8方向に動くプレイ可能なキャラクターが完成します。

左上のシーンメニューからNew Scene(新規シーン)をクリックし、新しいシーンを作成します。ルートとしてKinematicBodyノードを作成し、Playerという名前を付けます。

image0

キネマティックボディは、2D ゲームのチュートリアルで使用したエリアとリジッドボディを補完するものです。リジッドボディと同じように、移動して環境と衝突することができますが、物理エンジンによって制御されるのではなく、あなたがその動きを指示します。このノードのユニークな機能を、ジャンプとスクワッシュの動作のコーディングで見ていきます。

参考

さまざまな物理ノードの種類についての詳細は、 物理の紹介 を参照してください。

とりあえず、キャラクタの3D モデルに対して基本的なリグを作成します。これによって、後でアニメーションを再生しながら、コードを使用してモデルを回転させることができます。

Spatialノードを Playerの子として追加し、Pivotという名前に変更します。次に、ファイルシステム(FileSystem) ドックで、art/フォルダをダブルクリックして展開し、player.glbPivotノードにドラッグ アンド ドロップしてください。

image1

これで、Pivotの子としてモデルがインスタンス化されるはずです。これをCharacterにリネームすることができます。

image2

注釈

.glbファイルは、オープンソースの GLTF 2.0 仕様に基づく 3D シーン データを含んでいます。これは、FBX のような独自のフォーマットに代わる、現代的で強力なフォーマットで、Godot もこれをサポートしています。これらのファイルを作成するために、Blender 3Dでモデルを設計し、それを GLTF にエクスポートしました。

あらゆる種類の物理ノードと同様に、キャラクターが環境と衝突するためのコリジョン形状が必要です。Playerノードを再度選択し、CollisionShapeを追加してください。インスペクター(Inspector)で、SphereShapeShapeのプロパティに代入します。球体のワイヤーフレームが、キャラクターの下に表示されます。

image3

これは、物理エンジンが環境と衝突するときに使用する形状になります。なので、3D モデルにうまくフィットするようにします。ビューポートでオレンジ色のドットをドラッグして、少し縮小してください。私の球体の半径は、0.8メートルほどです。

次に、この形状を上に移動して、その底がグリッドの平面とほぼ一致するようにします。

image4

モデルの可視性を切り替えるには、CharacterノードまたはPivotノードの横にある目のアイコンをクリックします。

image5

Player.tscnという名前でシーンを保存します。

ノードの準備ができたので、ほとんどコーディングできるようになりました。しかしその前に、いくつかの入力アクションを定義する必要があります。

入力アクションの作成

キャラクターを動かすために、矢印キーを押した、などのようなプレイヤーの入力操作を認識する必要があります。Godotでは、全てのキーバインドをコードで書くこともできますが、キーやボタンのセットに操作のラベルを割り当てられる便利な機能があります。この機能により、スクリプトをよりシンプルで読みやすくすることができます。

このシステムが「インプットマップ」です。そのエディターにアクセスするには、プロジェクト(Project)メニューから、プロジェクト設定...(Project Settings...)を選択してください。

\ image6

上部に、複数のタブがあります。インプットマップ(Input Map)をクリックします。このウィンドウでは、上部で新しいアクションを追加することができます。それらはあなたのラベルです。下部では、これらのアクションにキーをバインドすることができます。

\ image7

Godotプロジェクトは、ユーザーインターフェイス設計のために設計された定義済みのアクションがいくつか用意されており、ここでそれを使うこともできます。しかし、ゲームパッドをサポートするために、私たちは独自のアクションを定義しています。

私たちはアクションに、move_leftmove_rightmove_forwardmove_back、 そして jumpという名前をつけたいと思います。

アクションを追加するには、上部のバーに名前を記入して、Enterキーを押します。

\ image8

5つのアクションを作成します。ウィンドウの下部に、これらのアクションがすべて表示されるはずです。

\ image9

キーやボタンをアクションに紐づけるには、その右側にある "+" ボタンをクリックします。move_leftに対してこの操作を行い、ドロップダウンメニューでキー(Key)をクリックします。

\ image10

このオプションは、キーボード入力を追加することができます。ポップアップが表示され、キーが押されるのを待ちます。左矢印キーを押して、OKをクリックします。

\ image11

Aキーについても同様にします。

\ image12

次に、ゲームパッドの左ジョイスティックのサポートを追加しましょう。もう一度 "+" ボタンをクリックしますが、今度は ゲームパッドの方向キー/スティック(Joy Axis)を選択します。

\ image13

ポップアップでは、2つのドロップダウンメニューが表示されます。左側では、インデックスでゲームパッドを選択します。Device 0は最初に接続されたゲームパッドに対応し、Device 1 は 2 番目に対応し、以下同様です。右側の入力アクションにバインドするジョイスティックと方向を選択します。デフォルトのまま、*追加*(Add)ボタンを押します。

\ image14

他の入力アクションも同じようにします。たとえば、右矢印、D、左ジョイスティックの右軸を move_rightにバインドします。すべてのキーをバインドすると、インターフェイスは次のようになります。

\ image15

jumpアクションの設定が残っています。SpaceキーとゲームパッドのAボタンをバインドします。ゲームパッドのボタンをバインドするには、メニューからゲームパッドのボタン(Joy Button)オプションを選択します。

\ image16

初期値のままで、追加(Add) ボタンをクリックします。

\ image17

ジャンプ入力のアクションはこのようになるはずです。

image18

これで、このゲームに必要なアクションが用意できました。このメニューを使って、プロジェクト内のキーやボタンのグループにラベルを付けることができます。

次のパートでは、プレーヤーの動きをコーディングしてテストしていきます。