プラットフォーマー チュートリアル Part 8:チェックポイントをゲームに追加しよう

今回はチェックポイントをゲームに追加する方法を説明します。そしてプレイヤーが死んだときは、最寄りのチェックポイントに送るようにします。

シリーズ

ステップ 1:チェックポイントオブジェクトを作成する

最初のステップでは、チェックポイント用のオブジェクトを作成します。チュートリアルもここに差し掛かれば、もはやおなじみの手順でしょう。うろ覚えな感じがしたら、オブジェクトを読んでみてください。

では次の手順でチェックポイントオブジェクトを作成しましょう。

  1. 「Checkpoint」という名前のスプライトオブジェクトを作成します。
  2. チェックポイントのイメージには「bush.png」アセットを使います。
  3. オブジェクトをシーンにドラッグして、1 個以上のインスタンスを配置します。

ステップ 2:プレーヤーがチェックポイントに到達したら座標をセーブする

プレーヤーがチェックポイントに到達したら、チェックポイントの座標を変数に保存するようにします。そうすれば、プレイヤーが死んだときにその座標に送り返せます。

オブジェクトの X 座標と Y 座標には、次の構文でアクセスできます。

オブジェクト名.X()
オブジェクト名.Y()

これらの文は、両方とも式の例です。

次の手順で、「Player」オブジェクトがチェックポイントに到達したときに座標を保存します。

  1. 新しいイベントを作成します。
  2. 「Player」オブジェクトの衝突条件を作成して、「Checkpoint」と衝突しているかチェックします。
  3. シーン変数の値アクションを作成して、そこで「CheckpointX」変数に Checkpoint.X() の値を代入します。
  4. シーン変数の値アクションを作成して、そこで「CheckpointY」変数に Checkpoint.Y() の値を代入します。

ステップ 3:プレーヤーを直前のチェックポイントに送る

ここまでは、「Player」オブジェクトが「Slime」オブジェクトと接触したら、オブジェクトを削除するアクションで「Player」オブジェクトをシーンから削除していました。しかしゲームにはいまやチェックポイントが設置されているので、「Player」オブジェクトを削除する必要はもうありません。

代わりに「Player」オブジェクトを直前のチェックポイントに送ることにしましょう。

  1. オブジェクトを削除するアクションを削除します。
  2. 「Player」オブジェクトのオブジェクトの位置アクションを作成します。
  3. 変更記号フィールドをすべて=(代入)にします。
  4. X 位置Variable(CheckpointX) と入力します。
  5. Y 位置Variable(CheckpointY) と入力します。

ゲームをプレビューすると、死んだプレイヤーが直前のチェックポイントに送り返されます。

ステップ 4:プレイヤーのデフォルト座標を設定する

CheckpointXCheckpointY 変数は、プレイヤーが最初のチェックポイントに到達するまで存在しません。そのためプレイヤーが最初のチェックポイントに到達する前に死ぬと、GDevelop はプレイヤーをデフォルト座標「0,0」に送り返します。

これは次の理由で、望ましくありません。

  • デフォルト座標に何か存在するかもしれない(敵とか)
  • デフォルト座標の下にはプラットフォームがないかもしれない

これを是正するため、CheckpointXCheckpointY 変数に、あらかじめ “Player” オブジェクトの初期座標を設定しておきましょう。初期座標は、シーンエディターに「Player」オブジェクトを配置したその場所が適当です。

次の手順で、初期座標を設定します。

  1. 新しいイベントを作成します。
  2. シーンが始まった条件をイベントに追加します。
  3. シーン変数の値アクションを作成して、そこで「CheckpointX」変数に Player.X() の値を代入します。
  4. シーン変数の値アクションを作成して、そこで「CheckpointY」変数に Player.Y() の値を代入します。

次のステップ

ついにこのチュートリアルをやり通しましたね。おめでとうございます!

ここからは、ジオメトリモンスターのような他のチュートリアルに挑戦するもよし、プラットフォームゲームをさらに発展させていくもよし、です。これまでに身につけたことを生かせば、あなたにしか作れないものがきっとできるはず。