プラットフォーマー チュートリアル Part 5:収集コインをゲームに追加しよう

今回は収集コインをゲームに追加する方法を説明します。

次の内容を含んでいます。

  • プレイヤーが接触したときにオブジェクトを削除する(サウンドも再生する)
  • 変数を使ってデータを管理する
  • シーンにテキストを追加する

シリーズ

ステップ 1: 収集コインを作成する

最初に、プレイヤーが収集できるコインを作成します。このステップは 2 つのパートに分けられます。コインの作成をする部分と、プレイヤーの接触を感知するイベントによってコインを収集可能にする部分です。

コインのオブジェクトを作成する

  1. 「Coin」という名前のスプライトオブジェクトを作成します。
  2. オブジェクトの画像にアセットの「coin.png」を指定します。
  3. オブジェクトをシーンにドラッグして、1 個以上のインスタンスを配置します。

シーンに配置済みのコインを複製するには、Ctrl キー(macOS の場合は Cmd キー)を押しながら、コインのインスタンスをドラッグします。

コインを収集可能にする

  1. 新しいイベントを作成します。
  2. 「Player」オブジェクトの衝突条件をイベントに追加して、「Coin」との接触をテストします。
  3. オブジェクトを削除するアクションをイベントに追加して、「Coin」オブジェクトを削除するように設定します。
  4. サウンドを再生するアクションをイベントに追加して、プレイヤーがコインを収集したときの効果音を再生します(効果音には「coin.wav」アセットを使います)。

ゲームをプレビューして、プレイヤーがコインと接触するとコインが消えて効果音が鳴ることを確認しましょう。

ステップ 2: 収集コインを管理する

ユーザーがコインを収集するたびに、プレイヤーが獲得したコインの数を更新して記憶しておく必要があります。そのために、変数を使います。

変数とは、データを格納する容れ物のことです。代数を習ったことがある人なら、変数はおなじみのはずです。よく「x」とか「y」とかの文字で表されていた、アレです。

GDevelop には 3 種類の変数があります。

  • オブジェクト変数
  • シーン変数
  • グローバル変数

変数の種類それぞれについての詳しい説明はこのチュートリアルの取り扱い範囲を超えるため、変数のスコープで違いを確認してみてください。今回の場合は、シーン変数を使うのがいいでしょう。この変数は、シーンのあいだじゅう存在し続けます。

集めたコインの数を管理するシーン変数の作り方は、次の通りです。

  1. シーン変数の値アクション(変数カテゴリーの下にあります)を、手前で作成したイベントに追加します。
  2. 変数フィールドに「Score」と入力します。これが変数の名前になります。
  3. 変更記号ドロップダウンリストから+(足す)を選択します。
  4. フィールドに「1」と入力します(二重引用符は要りません)。
  5. OKをクリックします。

これでプレイヤーが集めたコインの数を管理できるようになりました。ただし、コインの数は(まだ)画面に表示されません。

ステップ 3: 集めたコインの数を表示する

集めたコインの数を表示するには、テキストを表示するオブジェクトと、そこに表示するテキストを更新するイベントが必要です。

テキストを表示するオブジェクトを作成する

  1. 「Score」という名前のテキストオブジェクトを作成します。
  2. 最初に表示するテキストフィールドに「スコア:0」と入力します。これがオブジェクトに表示されるデフォルトのテキストになります。
  3. 適用をクリックします。
  4. オブジェクトをシーンにドラッグしてインスタンスを配置します。

集めたコインの数で「Score」オブジェクトを更新する

コイン数を表示するテキストを更新する前に、ここでについて確認しておきましょう。

GDevelop の式は、表計算ソフトの数式や、プログラミング言語の関数のようなものです。式には値を渡して、結果の値を受け取ることができます。

たとえば「Score」変数の値を取得するための Variable 式は次のようになります。

Variable(Score)

「Score」変数は数値を格納しているので、この式は数値を返します。数値は ToString 式を使って文字列に変換できます。

ToString(Variable(Score))

式は GDevelop の最も高度な、そして最もパワフルな概念のひとつです。この概念をすぐに理解できなかったとしても、心配しないでください。このチュートリアルにしたがって、式を実際に使うのが秘訣です。実践ほど役に立つものはありません。

集めたコインの数で「Score」オブジェクトを更新する方法は、次の通りです。

  1. 新しいイベントを作成します。
  2. 条件を指定せずに、「Score」オブジェクトに対するテキストを修正するアクションを追加します。条件を指定しないと、アクションは必ず毎フレーム実行されます。これによって、スコアを常に正確に表示できます。
  3. 変更記号ドロップダウンリストから=(代入)を選択します。
  4. フィールドに "スコア:" + ToString(Variable(Score)) と入力します。ToStringVariable 式で、集めたコインの数値を文字列に変換しています。また + 演算子で 2 つの文字列を 1 つに連結しています。
  5. OKをクリックします。

ゲームをプレビューすると、収集コインが画面に表示されます。

値フィールドの脇に表示される青いアイコンをクリックすると、式エディターが表示されます。

カテゴリー別に分類された利用可能なすべての式を、そこで検索できます。

テキストを別のレイヤーに移動する

「Score」オブジェクトには問題が一つあります。集めたコインの数は、プレイヤーが特定の位置にいるあいだだけ見えていて、プレイヤーが移動すると画面から外れてしまうのです。

この問題を解決するには、「Score」オブジェクトを別のレイヤーに移動する必要があります。

  1. レイヤーエディターを開くアイコンをクリックします。
  2. レイヤーを追加をクリックします。
  3. レイヤー名に「UI」と入力します。
  4. シーンエディターの「Score」インスタンスを選択します。
  5. プロパティパネルのレイヤードロップダウンリストからUIを選択します。

ゲームをプレビューすると、スコアが同じ位置に固定されているはずです。

次のステップ