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

次の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という名前でシーンを保存します。

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

Creating input actions

To move the character, we will listen to the player's input, like pressing the arrow keys. In Godot, while we could write all the key bindings in code, there's a powerful system that allows you to assign a label to a set of keys and buttons. This simplifies our scripts and makes them more readable.

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

\ image6

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

\ image7

Godot projects come with some predefined actions designed for user interface design, which we could use here. But we're defining our own to support gamepads.

We're going to name our actions move_left, move_right, move_forward, move_back, and jump.

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

\ image8

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

\ image9

To bind a key or button to an action, click the "+" button to its right. Do this for move_left and in the drop-down menu, click Key.

\ image10

This option allows you to add a keyboard input. A popup appears and waits for you to press a key. Press the left arrow key and click OK.

\ image11

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

\ image12

Let's now add support for a gamepad's left joystick. Click the "+" button again but this time, select Joy Axis.

\ image13

The popup gives you two drop-down menus. On the left, you can select a gamepad by index. Device 0 corresponds to the first plugged gamepad, Device 1 corresponds to the second, and so on. You can select the joystick and direction you want to bind to the input action on the right. Leave the default values and press the Add button.

image14

Do the same for the other input actions. For example, bind the right arrow, D, and the left joystick's right axis to move_right. After binding all keys, your interface should look like this.

image15

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

image16

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

image17

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

image18

That's all the actions we need for this game. You can use this menu to label any groups of keys and buttons in your projects.

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