課題 5 - 食べ物クリックゲーム

Tutorial

·

Beginner

·

+0XP

·

60 mins

·

(94)

Unity Technologies

課題 5 - 食べ物クリックゲーム


課題の概要:

この課題では、ここまで学んだユーザーインターフェースのスキルを使って、ドクロをクリックしないようにしつつ、グリッド上に現れる食べ物をすべてクリックしていくモグラたたきのようなゲームを作ります。ボタン、マウスクリック、スコア追跡、再スタートの流れ、難易度設定についてデバッグを行い、この課題を完成させてください。

課題の成果物:

  • すべてのボタンのテキストが適切な配置になっている。
  • 難易度を選択すると、それに応じてオブジェクトの出現率が変化する。
  • 食べ物のオブジェクトはクリックして破壊でき、左上のスコア表示が更新される。
  • ゲームオーバーになると再スタートボタンが表示され、それをクリックすると再プレイが可能になる。

Languages available:

1. 概要

  1. Prototype 5 プロジェクトを開きます。
  2. 「コースの素材」セクションから「Challenge 5 Starter Files」をダウンロードし、ダブルクリックしてインポートします。
  3. Project ウィンドウで、Assets > Challenge 5 > Instructions フォルダーの「Challenge 5 - Outcome」動画をガイドとして使用して、課題を完了させます。

2. 難易度ボタンの見た目が乱雑!

  • ボタンのテキストの水平位置と垂直位置を共に中央にします。

3. 食べ物が出現してから消えるまでが早すぎる!

  • 食べ物はマウスカーソルが触れた瞬間に消えるようになっていますが、これはプレイヤーがクリックしたときだけ消えるようにします。

4. スコアが「score」という単語で置き換えられる!

  • 「Score:」の後に得点の値をつないで「Score: <得点>」のように表示する形式にします。

5. ゲーム終了後、再スタートできない!

  • 再スタートボタンをゲームオーバー画面に表示するようにします。

6. どの難易度ボタンを押しても難易度が変わらない!

  • spawnRate の値がどのボタンを押しても食べ物を速く表示するような値になっています。Easy をクリックしたら spawnRate の値はもっと食べ物をゆっくり表示する値にして、Hard をクリックしたらより速く表示する値にするように設定します。

7. ボーナス課題:いつまでもゲームが続く!

  • 「Time: <数値>」と表示する部分を作り、60 から整数でカウントダウンして(59、58、57、...のように)、0 になったらゲームオーバーの処理を行うようにしてみましょう。
Optional Step

8. ヒント

  • ボタンのテキストの水平位置と垂直位置を共に中央にする
    ヒント - Hierarchy 内のボタンオブジェクトを展開すると、その中に「Text」オブジェクトが表示されます。
  • 食べ物はマウスカーソルが触れた瞬間に消えるようになっているが、これをプレイヤーがクリックしたときだけ消えるようにする
    ヒント - OnMouseEnter() は、マウスがオブジェクトのコライダーに入ったタイミングを検出します。OnMouseDown() は、マウスがオブジェクトのコライダーをクリックしたタイミングを検出します。
  • 「Score:」の後に得点の値をつないで「Score: <得点>」のように表示する形式にする
    ヒント - スコアのテキストを設定するとき、「Score: 」 と実際のスコアの値を連結します。
  • 再スタートボタンをゲームオーバー画面に表示するようにします。
    ヒント - GameOver() メソッドで、再スタートボタンが再度有効化されていることを確認してください。
  • spawnRate の値が常に食べ物を非常に速く表示するような値になるので、Easy をクリックしたらもっと食べ物をゆっくり表示する値に、Hard をクリックしたらより速く表示する値に設定する
    ヒント - ボタンのスクリプトから Game Manager のスクリプトに渡される情報(またはパラメーター)がありません。
  • ボーナス課題: 「Time: <数値>」と表示する部分を作り、60 から整数でカウントダウンして(59、58、57、...のように)、0 になったらゲームオーバーの処理を行うようにする
    ヒント - 「Unity count down timer C#」でググってみてください。「Time.deltaTime」を引いていく方法や、Mathf.Round()メソッドを使って整数部分のみを表示するような方法が見つかると思います。

Complete this tutorial