プラットフォーム型ゲームに敵を追加する

これは プラットフォーム型ゲームの作成のチュートリアルの一部です。 ですが、他のゲームにも参考になります!

ステージ上を左右に移動する敵を追加しましょう。プレイヤーは、その上にジャンプして破壊することができます。

敵のオブジェクトを作成してシーンに追加します

新しい「スプライト」オブジェクトを作成します。最初のアニメーションにWalkと名前をつけ、画像slimeWalk1.pngを追加し、次の画像にslimeWalk2.pngを追加します。 敵は常に動いているため、停止やその他のアニメーションは必要ありません。

「ループしない」ボタンをクリックしてアニメーションをループに設定し、「ループ」に切り替え、時計アイコンを使用してアニメーション速度を0.5に設定します。

ウィンドウは次のようになります。

「適用」ボタンをクリックして、変更を確認します。

次に、オブジェクトの名前をにスライムに変更します。スライムオブジェクトをシーンに追加し、ステージの真上に配置するようにします。

今すぐプレビューを実行しても、それほど効果はありません。ステージの上部に静かに座って、歩行アニメーションを再生します。 動かしてみましょう。

敵を左右に動かす

このチュートリアルでは、スライムが左右に移動します。不可視のオブジェクトを使用してこれを行います。スライムがオブジェクトの1つに触れると、方向が逆になります。

区切り文字として機能する2つのオブジェクトを追加しましょう。新しいスプライトオブジェクトを作成し、イメージ「Left.png」ファイルを追加します。このオブジェクトに「レフト」と名前を付けます。次に、もう1つのオブジェクト「Right.png」を作成し、イメージを追加します。このオブジェクトには「right」と名前を付けます。

最後に、ステージの右側にrightオブジェクトと、ステージの左側にleftオブジェクトを配置します。

次のようになります。

アイデアは、スライムがleftオブジェクトと衝突した場合、スライムの方向を左に移動するように設定するということです。そして、rightオブジェクトと衝突している場合、スライムを右に移動するように設定します。

最初に「方向」オブジェクト変数を作成します。この変数を使用して方向を変更します。

オブジェクト変数をスライムに追加するには、オブジェクトリストでスライムオブジェクトを右クリックし、[オブジェクト変数の編集]を選択します。

空のウィンドウが表示されます。これには、スライムオブジェクトに対して宣言したオブジェクト変数のリストが含まれています。何も宣言していないので、今は空です。オブジェクト変数を追加するには、右下隅のプラス記号をクリックします。

これにより、ウィンドウに「変数」という変数が追加されます。名前をクリックして、「方向」に変更します。値フィールドをクリックして、「left」と入力します。 ウィンドウは次のようになります。

[適用]ボタンをクリックして、変更を確認します。これで、デフォルト値が「left」の「方向」というオブジェクト変数ができました。

この変数を使用して、スライムを動かしましょう。

イベントエディターで、空のイベントを追加し、条件を追加して、「全てのオブジェクトに共通の条件」 > 「変数」 > 「オブジェクトの変数のテキスト」を選択します。

パラメータで、オブジェクトフィールドに「スライム」を選択します。「変数」フィールドで「方向」を選択します。(または「方向」をキーボードを使用して入力)。テストの符号判定に「等しい」を選択し、最後に値に「left]を入力します。引用符の間に値を入れることを忘れないでください。

ウィンドウは次のようになります。

OKを押して確認し、イベントに条件を追加します。スライムを左に移動するアクションを追加しましょう。

「アクションを追加」をクリックし、「全てのオブジェクトに共通の条件」 > 「動き」 > 「フォース(角度)の追加」から、「「力(角度)を追加」を選択します。いつでも検索ボックスを使用して、探しているものを見つけることができます。

パラメータで、オブジェクトフィールドに再度「スライム」を選択します。角度には「180」度(GDevelop座標系の左側)を入力し、速度には100ピクセルを入力します。一定時間有効な状態として、ゲームのすべてのフレームで力が適用されるため、「インスタント」を選択します。

ウィンドウは次のようになります。

[OK]を押して、イベントに条件を追加します。

ここでプレビューを実行すると、スライムが左に移動し始めますが、おそらくスライムは移動し続け、方向を変えないことに気付くでしょう。

今回は、スライムオブジェクトと「right」と呼ばれるオブジェクト間の衝突をチェックし、方向変数の値を「right」に変更します。

空のイベントを追加し、スライムと「right」というオブジェクトとの衝突をチェックする条件を追加します。これを行う方法はすでに知っているはずです。次に、「オブジェクトの変数のテキストを変更する」アクションを追加します。

パラメータで、オブジェクトはスライムを選択し、変数は「方向」を選択し、オペレータは「=(set to)」を選択します。最後に、値に「right」と入力します。二重引用符を忘れないでください。

ウィンドウは次のようになります。

ここでプレビューを実行すると、方向が「正しい」場合にGDevelopに何をするかを指示しなかったため、何も起きていないことに気付くかもしれません。

最後に、同じ2つの同様のイベントを追加しますが、「left」を「right」に反転させ、方向を変更します。完了すると、イベントは次のようになります(後で追加するスプライトを反転するアクションを除く)。

ゲームのプレビューを起動すると、スライムは左右に移動するはずですが、移動してもスライムは左を向いています。向きを変えましょう。

スライムを左に移動させるイベントのアクションのリストで、スプライトを水平方向に反転するアクションを追加します。オブジェクトの場合は「スライム」を選択し、値の場合は「いいえ」を選択します(左に移動するときにオブジェクトを反転させたくないため)。スライムを右に移動するために使用されるイベントに対して、同じ時間を繰り返します。オブジェクトが正しく移動しているときにオブジェクトを反転させたいため、今回は「はい」を選択します。

イベントは次のようになります。

スライムは左右に移動し、移動時に適切な向きになります。

プレイヤーが敵を倒す

プレイヤーがスライムの上にジャンプしたときに、スライムを破壊するようにしましょう。

プレーヤーとスライムの間に衝突があるかどうかを確認する条件を持つ空のイベントを追加します。スライムを削除するアクションを追加します。これは以前に コインで行ったことと似ていますが、今回はスライムで行いました。

これを今実行すると、スライムは衝突するとすぐに削除されるはずですが、これはまだ望んでいるものではありません。プレイヤーがその上にジャンプした場合にのみ削除します。

これを行うには、イベントにもう1つの条件を追加します。今回は、プレーヤーが落下しているかどうかを確認します。

プレビューを実行すると、プレイヤーがスライムにジャンプしたときにスライムが削除されます。

プレイヤーがスライムに落ち、プレイヤーが膨らむことなくスライムが消えるので、まだ完璧ではありません。

これを行うには、イベントにもう1つのアクションを追加します。今回は、「再度ジャンプを許可する」というアクションを選択します(「プレーヤー」オブジェクトの場合)。次に、「ジャンプキーを押す動作をシミュレートする」という別のアクションを追加して、ジャンプさせます(プレイヤーが跳ねているように見えます)。両方のアクションは、「プラットフォームの動作」カテゴリにあります。

この時点で、イベントは次のようになります。

プレビューを実行してスライムの上部にジャンプすると、プレーヤーはそっとバウンドし、スライムが消えます。

敵がプレイヤーを倒す

今度は逆のロジックを作りましょう:敵がプレイヤーに触れたらプレイヤーを殺します。

空のイベントを追加し、条件を追加して、プレーヤーとスライムの衝突を確認します。次に、プレーヤーを削除するアクションを追加します。

スライムを削除する前にプレーヤーを削除したり、プレーヤーを削除する前にスライムを削除したりする可能性があるため、これはそのままでは機能しません。

これを回避するには、イベントにもう1つの条件を追加して、プレーヤーが画面中にいるかどうかを確認します。

プレビューを実行すると、スライムの上にジャンプしてスライムを殺すことができるはずです。スライムは、衝突の瞬間にプレイヤーが画面中にいる場合にプレイヤーを殺すことができるはずです。

ブロックの区切りを非表示にする

ここで最後に行う必要があるのは、これらの「left」および「right」の矢印オブジェクトを非表示にすることです。これを行うには、「シーンの開始時」という条件(シーンの開始時に1回だけトリガーされる)と「オブジェクトを左に隠す」および「オブジェクトを右に隠す」というアクションを持つイベントを追加します。

これまでのこのチュートリアルのイベントは次のようになります。

プレビューを実行すると、矢印の付いた左右のオブジェクトが非表示になり、スライムが常に左右に移動します。スライムの上にジャンプすることでスライムを殺すことができ、プレイヤーが地面にいる間にスライムがプレイヤーに衝突したときにスライムがプレイヤーを殺すことができるはずです。

次のステップ:チェックポイントの追加

現時点では、プレイヤーの「死」は少し残酷です。それを削除するだけです。代わりに、彼が最後に通過したチェックポイントまで彼を再出現させましょう。プラットフォーマーゲームでは、プレイヤーが死んだときに最初からやり直すことを強制したくない場合、チェックポイントが不可欠です(これは興味深いことですが、イライラすることもあります!)

➡️ ゲームにチェックポイントを追加する!