レッスン 4.3 - パワーアップとカウントダウン
Tutorial
·
Beginner
·
+0XP
·
60 mins
·
(138)
Unity Technologies

概要:
敵はプレイヤーを島中追いかけ回すようになりました。このため、プレイヤーには自分の身を守るためのより良い方法が必要です。特に敵を増やしたとき、身を守る良い方法がなければ生き残ることはできません。このレッスンでは、プレイヤーを一時的に強くするパワーアップの仕組みを作成して、接触してくる敵を押しのけられるようにします。パワーアップアイテムは島のランダムな位置に出現し、拾うとプレイヤーにインジケーターが付いてパワーアップしたことがわかるように表示されます。パワーアップのインジケーターとパワーアップアイテムは、好みのスタイリッシュなゲームアセットで表現されます。
プロジェクトの成果物:
パワーアップアイテムは、プレイヤーが拾える状態でマップ上のランダムな位置に出現します。プレイヤーがこのパワーアップアイテムに接触すると、パワーアップアイテムは消滅し、プレイヤーにインジケーターが付きます。パワーアップはアイテムを拾った後 5 秒間持続し、その間プレイヤーは敵を吹き飛ばせる状態になります。
Languages available:
1. 導入
2. パワーアップアイテムを選んで準備する
今回はまったく新しいゲームプレイのメカニクスを追加するために、プレイヤーを一時的に強化する新しいパワーアップアイテムを導入します。
- Library から、Powerup オブジェクトをシーンにドラッグし、「Powerup」と名前を変更し、大きさと位置を編集します。
- Powerup に Box Collider を追加し、Edit Collider をクリックしてちょうどいい大きさにして、「Is Trigger」チェックボックスにチェックを入れます。
- 新しく「Powerup」タグを作成し、それを Powerup に適用します。
- Powerup を Prefabs フォルダーにドラッグして、新しい「オリジナルのプレハブ」を作成します。
3. 触れた時にパワーアップアイテムを消去する
パワーアップを動作させるための最初のステップとして、プレイヤーが触れたときにパワーアップが消えるようにして、プレイヤーがパワーアップアイテムを拾ったことを記録する新しいブーリアン変数を設定します。
- PlayerController.cs に、新しく OnTriggerEnter() メソッドを追加します。
- 衝突時に other.CompareTag("Powerup")を条件文に持つ if 文を追加し、パワーアップアイテムに触れた時に消去するようにする。
- 新しく public bool hasPowerup; を作成し、パワーアップアイテムに接触したら hasPowerup = true; と設定するようにする。

4. 敵キャラとパワーアップをテストする
パワーアップは、プレイヤーがパワーアップを持っていて、かつ敵と衝突した場合という、非常に特殊な状況下でのみ効果を発揮します。そのため、まずこの非常に特殊な状況をテストしましょう。
- 新しく「Enemy」タグを作成し、Enemy プレハブに適用します。
- PlayerController.cs で、OnCollisionEnter() 関数を追加します。
- 敵タグのブーリアン値 hasPowerup と Enemy タグの 2 つの条件をテストする if 文を作成します。
- Debug.Log を作成して動作していることを確認します。
5. パワーアップ時に追加される弾き飛ばす力を適用する
これでパワーアップの条件が完璧に整ったので、パワーアップ機能の中身をプログラムする準備が整いました。プレイヤーがパワーアップしているときに敵とぶつかったら敵が飛んでいくようにしましょう。
- OnCollisionEnter() で、敵の Rigidbody コンポーネントを取得するための新しいローカル変数を宣言します。
- プレイヤーから離れる方向を保持するための新しい変数を宣言します。
- 新しい変数 powerupStrength を使用して、敵に衝撃力を与えます。

6. パワーアップのカウントダウンを行うルーチンを作る
パワーアップが永遠に続くと敵との力のバランスが崩れるので、プレイヤーがパワーアップを拾った時に発動するカウントダウンタイマーをプログラムし、タイマーが終了するとパワーアップ機能を停止するようにします。
- 新しく IEnumerator PowerupCountdownRoutine () {} を追加します。
- PowerupCountdownRoutine の中で 7 秒待ってから、Powerup を無効にします。
- プレイヤーがパワーアップに触れたら、コルーチンを起動します。

7. パワーアップのインジケーターを追加する
このゲームをよりプレイしやすくするためには、プレイヤーがパワーアップをしたときとしなかったときが明確にわかるようにしておくべきです。そこで、パワーアップしているかどうかをユーザーに示す視覚的なインジケータをプログラムします。
- Library から、Powerup オブジェクトをシーンにドラッグし、「Powerup Indicator」と名前を変更し、大きさを編集します。
- インスペクターの「Active」チェックボックスのチェックを外します。
- PlayerController.cs で、新しく public GameObject powerupIndicator 変数を宣言し、インスペクターで Powerup Indicator 変数を割り当てます。
- プレイヤーがパワーアップに触れたとき、インジケーターのオブジェクトをアクティブに設定し、パワーアップの有効期限が切れたら非アクティブに設定します。
- Update() で、インジケーターの位置をプレイヤーの位置にオフセット値を加えた位置に設定します。

8. レッスンのまとめ
新しい機能:
- プレイヤーがパワーアップを拾うと、視覚的なインジケーターが表示されます。
- パワーアップ中に敵と衝突すると敵が飛んでいく
- 一定時間経過するとパワーアップ能力とインジケーターが消える
新しい概念とスキル:
- デバッグメッセージの連結
- ローカルのコンポーネント変数
- IEnumerators と WaitForSeconds()
- コルーチン
- SetActive(true/false)
次のレッスン:
- プレイヤーが次々に現れる敵の集団を撃退するようなゲームにしましょう。