**This is an old revision of the document!**

コインの表示とゲットしたコインの表示

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

これまでに作成したゲームでは、プレーヤーは何もすることがありません。プレーヤーがコインをゲットできるように追加しましょう。

コインの追加

金色のコイン画像を使って、新しいスプライトオブジェクトを作成することから始めます。

このオブジェクトは「コイン」という名前にします。

ステージに複数のコインを配置することができます。いくつかのコインが必要になるので、シーンエディターの「ドラッグ・アンド・クローン」機能を使用することをお勧めします。コインを選択し、Ctrl(またはmacOSではCmd)を押したまま、コインをドラッグします。これにより複製されます。

Shiftキーを押しながら移動すると、元の軸と同じ軸に作成されたコインを移動することもできます。

集めたコインの削除

プレイヤーがそれらに触れたときにコインオブジェクトを破壊しましょう。新しいイベントを追加し、条件を追加します。2つのオブジェクト間の衝突をテストする条件を選択します。最初のオブジェクトは「Player」、2番目のオブジェクトは「コイン」にする必要があります。

次に、コインを削除するアクションを追加できます。最初の条件で選択された「コイン」オブジェクトのみがアクションで使用されるため、プレーヤーと衝突していたコインのみが削除されます。

「全てのオブジェクトに共通のアクション」>「オブジェクト」から、「カテゴリの削除」アクション選択し、削除するオブジェクトとして「コイン」を入力します。

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

プレビューを起動して、プレイヤーがコインの上を通過するとコインが削除されることを確認できます!

コインをゲットした時に効果音を鳴らす

ゲームを、よりダイナミックでやりがいのあるものにするために、コインをゲットしたときにサウンドを再生しましょう。

簡単です。すでにcoin.wavゲームフォルダーにサウンドファイルがあります(そうでない場合は、ここからリソースをダウンロードして、ゲームフォルダーに展開します。)

これまでに行ったことのないことです。1つのイベントに実行する複数のアクションを追加できます。サウンドを再生するには、コインを削除するために使用したイベントに別のアクションを追加しましょう。[オブジェクト コインの削除]アクションのすぐ下にある[アクションの追加]をクリックし、オーディオカテゴリから、「サウンドを再生」というアクションを追加します。この方法では、コインを削除するだけでなく、サウンドも再生します。

サウンドを再生するために使用できるパラメーター類があります。最初で最も重要なのは、再生するサウンドファイルです。フィールドをクリックし、「新しいオーディオファイルを選択」をクリックします。

ゲームフォルダーに入っている、他とファイルとともにダウンロードした、「coin.wav」ファイルを選択します。

他のパラメーターはそのままにします(例えば、サウンドをリピートしたり、音量100をを変更したり、デフォルト速度を変更しないで下さい。)

これで全てです!プレビューを起動すると、コインをゲットするたびにサウンドが再生されます 👍

変数を使用してスコアを計算

変数を使用して、プレーヤーのスコアを更新および記憶します。

変数は、数値や文字列(テキスト)などの特定の情報を保存および記憶するために使用できる保存場所です。GDevelopには、さまざまなタイプの変数があります。

  • Object 変数 オブジェクトの各インスタンスに固有のプライベート変数です。これは、各インスタンスが他のインスタンスと共有されることなく、独自の値を保存できることを意味します。たとえば、各敵の残機数を変更する場合等に役立ちます。
  • Scene 変数 (最も使用されるもの)は、シーンに付加された変数です。これは、それらの値がゲーム内の他のシーンと共有されないことを意味します。現在再生されているシーンにのみ関連する情報を保存すると便利です。たとえば、プレーヤーの残機数やスコア。
  • Global 変数 値はゲーム全体のすべてのシーンで共有されます。弾丸の量やプレーヤーが持っているお金の量など、すべてのシーン間で共有したい情報を保存したい場合に便利です。

今回使用しようとする変数はシーン変数であり、「スコア」と呼ばれます。

作成した最新のイベントにアクションを追加しましょう。アクションを選択し、「変数」 > 「変数の値」を選択します。このアクションは、スコア変数に100を追加するために使用されるため、次のようにパラメーターを入力します。

GDevelopでは、変数を使用する前に変数を宣言する必要はありません。アクションまたは条件で名前を付けるだけで、変数を宣言せずに使用できます。宣言されていない変数でアクションを使用している場合、GDevelopは変数のアクションを実行した後、トラブルを防ぐためにデフォルト値「0」(または空のテキスト)で自動的に作成します。

しかし、ゲームをより良く編成するには、変数を使用する前に変数を宣言することをお勧めします。このようにして、ゲームで使用している変数を簡単に見つけることができます。デフォルト値を0以外に変更することもできます。変数を宣言するに…は、変数名の右側にあるボタン「…」をクリックします。これにより、変数のリストが表示されます。

変数はまだ宣言されていないため、リストが表示されますが、空になっています。

「+」ボタンを クリックして変数を追加し、名前に「スコア」と入力します。

これは完全にオプションでですが、良い習慣であることと思って下さい。

テキストオブジェクトを使用してスコアを表示

テキストオブジェクトの追加

現時点では、変数「スコア」は表示されないため、スコアが増加したことを確認できません(デバッガを使用しても、プレーヤーは見ることはできません)

変数「スコア」の値を表示するには、テキストオブジェクトを使用する必要があります。新しいオブジェクトを追加しましょう。作成するオブジェクトのタイプについて尋ねられたときに「テキスト」を選択します。

次に、オブジェクトのプロパティを変更して、テキストが黒でデフォルトのサイズより大きくなるようにします。

その後、オブジェクトをシーンに配置できます。

テキストレイヤーを変更する

ゲームを起動すると、スコアテキストが残りのオブジェクトとともに表示され、その位置が画面上で固定されていないことがわかります。この問題は、ベースレイヤーの上にレイヤーを使用することで簡単に解決できます。

このボタンを使用してレイヤーエディターを開きます。

レイヤーの一覧が表示されますが、現時点ではベースレイヤーのみです。

「+」ボタンを クリックしてレイヤーを追加します。名前に「UI」と入力します(UIはユーザーインターフェイスの略です)。

最後に、シーンのテキストインスタンスを選択してテキストオブジェクトをこの新しいレイヤーに移動し、左側のプロパティでUIレイヤーを選択します。

オブジェクトが画面上のどこかに表示されていることを確認してください。たとえば、左上に配置します。シーンエディターの黒い四角形は、ウィンドウのサイズを表します。

スコアの値の表示

画面にテキストが表示されたので、Score変数の値を表示するようにします。新しいイベントを追加します。このイベントには条件はありません。つまり、ゲームのフレームが画面にレンダリングされるたびにアクションが実行されます(1秒間に約60回)。

アクションを追加し、テキスト変更のカテゴリから、テキストオブジェクト選びます。

最初のパラメーターについては、スコアを更新したいオブジェクトを選択します。 2番目のパラメーターには、= (set to)演算子を選択します(テキストを新しい値に設定します)。 最後に、最後のパラメーターはテキストの新しいコンテンツを表します。これは、アクションの実行時にGDevelopによってゲーム中に評価される文字列式です。

テキストを引用符で囲んで指定することができます(このように:“Hello World”)。ただし、式と呼ばれるものも使用できます。式は、特定の値を返す関数です。この場合、スコア変数の値が必要であり、その値を使用してテキストオブジェクトのコンテンツを更新する必要があります。式はより高度なトピックであるため、ここでは詳しく説明しません。

ここで知っておく必要があるのは、シーン変数の値を取得するために、変数(変数名)の式を使用する必要があるということです。また、スコアは数値変数ですが、テキストとしての値が必要なので、ToString(変換式)というように、式から返された値を文字列に変換する必要があります。これを行うには、ToString(Variable(スコア))という別の式を使用します。

最後に、「+」演算子を使用して静的テキストの後にこの式を追加できます(テキストを"Score : " + ToString(Variable(スコア))と、二重引用符で囲むことに注意してください)。

GDevelopでは、他の多くの関数と式を利用できます。組み合わせると、高度な作業を行う強力なアクションを作成できます。値フィールドの横にある青いアイコンをクリックすると、式エディターでさらに式を見つけることができます。

最後のイベントは次のとおりです。

ゲームをプレビューしましょう。コインをゲットすると、スコアが表示され更新されることを確認できます!

Bonus: making sure that collecting two coins at the same time works

You might have noticed that if you collect two coins at the exact same time (for example, if two coins overlap), the score is only increased once. For example, if each coin is worth 100 points and you collect 2 coins, the score will only go up to 100 instead of 200. The fix for this is easy and is something we haven't looked at yet: we're going to use an event called For Each Object. What we will do is tell the engine that for every single coin that was collected, add 100 to the score.

To start, click the + button in the toolbar of the Events Editor:

Select “for each object”:

This will add an event at the bottom of the event page. Drag it up and make it a sub-event of the player collision with the coin:

Click to choose an object, and choose the Coin object.

Now that you've added the object to the sub-event, let's move the actions down to the sub-event (so that the actions will be repeated for each coin that is picked by conditions).

Hover over the first action, right-click and cut it, then hover over the action in the sub-event, right-click, and paste. Do this for the other two actions. You can also drag'n'drop actions, which is faster than cut-pasting them.

This is what the final event should look like:

Now run the game, and you will see that if you gather two coins at the same time, the score will be updated properly if you run on two coins at the exact same time.

Next step: add enemies

Every platform game comes with enemies that you have to avoid or kill by jumping on them! Let's add some and see how we can make them move.

➡️ Read Add enemies to your platformer game!