プレイヤーがコインに触れたら、3 つのことをします:コインが消える、スコアが 1 増える、新しいスコアが画面に表示される。
用意するもの:
- 動かせる player という名前のキャラクター(キャラクターを動かす を参照);
- コインをいくつか:円 オブジェクト(または画像)、たとえば coin1、coin2、coin3;
- 画面の上にある scoreText という名前の テキスト オブジェクト。文字は「スコア:0」。
ステップ 1:すべてのコインに同じタグをつける
タグはラベルのようなものです。タグがあれば、コインを 50 個置いても、1 つの Blueprint ですべてのコインに対応できます。
- コインを 1 つ選びます。
- インスペクターの 「タグ (ラベル)」 欄に piece と書きます。
- ほかのコインにも同じようにします(欄の横の 「リスト」 ボタンで、使ったことのあるタグを選べます)。
ステップ 2:変数「score」を作る
変数は、ゲーム中に数を覚えておく箱のようなものです。
- 左のパネルで 変数 の欄を開き、変数を作ります。
- 名前:score · 範囲:ローカル · 型:整数 · 最初の値:0。
👉 ローカル = 変数はこのシーンの中だけにあります。スコアを次のステージに持ちこしたいときは グローバル を選びます(次のステージに進む を参照)。
ステップ 3:Blueprint
- シーンの ブループリント を開きます。
- 「オブジェクトがタグに触れた場合」 イベントを追加します:ターゲット player、タグ piece。
- 「オブジェクトを破壊」 を追加します。ターゲットには イベントに関与するオブジェクト を選びます:プレイヤーがちょうど触れたコインのことです。
- 「変数に加算」 を追加します:変数 score、加算する値 = 1。
- 「テキストを変更」 を追加します:ターゲット scoreText、新しいテキスト =
="スコア:" + score - 4 つのノードを順番に、出力から入力へつなぎます。
- 保存してゲームを開始し、コインに触れてみます。
オブジェクトがタグに触れた場合ターゲット:player · タグ:piece
→
オブジェクトを破壊関連オブジェクト
→
変数に加算score · + 1
→
テキストを変更scoreText
👉 文字の最初の = 記号は、文字をそのまま書くのではなく計算するように Yop2D に伝えます。これがないと、画面に
"スコア:" + score がそのまま表示されます。引用符(" ")の中は変わらない部分です。👉 このイベントは接触ごとに 1 回だけ動きます:コインの上にいても、何点も入ることはありません。
おまけ:コインを全部集めたら勝ち
- 「テキストを変更」 のあとに 「条件」 ノードを追加し、条件 =
=score >= 3(3 = コインの数)にします。 - その 真 出力を、メッセージ 勝ち! の 「画面下の小さなメッセージ」 ノード、または 「次のシーン」 につなぎます。
テキストを変更scoreText
→
条件=score >= 3
真 →
画面下の小さなメッセージ勝ち!
うまくいかないとき
- コインが消えない: タグがどこでも同じ書き方か(piece)、「オブジェクトを破壊」 のターゲットが関連オブジェクトになっているか確認してください。
- 数式がそのまま表示される: 最初の = が抜けています。
- スコアが 0 のまま: 「変数に加算」 が変数 score を使っているか確認してください。
- 見比べるには、Yop2D に入っているサンプルゲーム「プラットフォーム」を開いてください。まさにこの方法でコインを集めています。