
課題 4 - サッカーのスクリプティング
Tutorial
Beginner
+0XP
60 mins
Unity Technologies

課題の概要:
このユニットで作った相撲バトルのプロトタイプで学んだスキルを、サッカー場というまったく異なる文脈で使用します。プロトタイプと同じように、カメラを回転させて前方に力を加えることでボールをコントロールしますが、ボールを端から叩き落とすのではなく、自陣のネットに入ってこようとするボールを、逆に敵陣のネットに叩き込んでやることが目標です。相撲と同じように、ラウンドを重ねるごとに敵のボールが増え、防御力が試されます。ところで、このプロジェクトは今のところほとんど何も機能していません。それを正常に動作させるのがあなたの仕事です。
課題の成果物:
- 自陣のネットに向かって敵が移動してくる。プレイヤーはそれらをはじき返して逸らすことができる
- プレイヤーを強化するパワーアップがある。パワーアップは5秒後に消滅する
- 敵のボールをすべて敵陣のネットに叩き込むと、ボールが1個増えた新たな敵のボールの集団が出現します。
Resources
1. 概要
- Prototype 4 プロジェクトを開く
- 「コースの素材」セクションから「Challenge 4 Starter Files」をダウンロードし、ダブルクリックしてインポートします。
- Project ウィンドウから、Assets > Challenge 4 > Instructions フォルダーにアクセスし、そこにあるリソースをこの課題を完了するためにリソースとして使用します。
2. 敵にぶつかると自分の方に飛んでくる!
- 敵にぶつかったら敵が向こうに飛んでいくようにしましょう。
3. プレイヤーがパワーアップアイテムを取ったらすぐに新しい敵の集団が出現する!
- 敵のボールが全部なくなってから新しい敵の集団を出現させるようにします。
4. いつまでもパワーアップしっぱなし!
- パワーアップは一定時間だけ持続し、その時間が過ぎたら消えるようにします。
5. いつまでも敵が 2 体ずつしか出現しない!
- 敵の集団は、最初は 1 体、次は 2 体、その次は 3 体...というように、集団が出現するごとに 1 体ずつ出現数が増えるようにします。
6. 敵のボールがどこにも動いていかない!
- 敵のボールが「Player Goal」オブジェクトに向かって動いていくようにします。
7. ボーナス課題:プレイヤーにスピードアップ機能をつけよう!
- プレイヤーがスペースキーを押したときにスピードアップするようにしましょう。また、スピードアップの時にパーティクルエフェクトも発生させてみましょう。
8. ボーナス課題:敵がずっと同じ強さのまま!
- 敵の集団が出現するたびに、敵のスピードを少しずつ上げていくようにしてみましょう。
任意のステップ
9. ヒント
- 敵にぶつかったら向こうに飛んで行くようにする
ヒント - PlayerControllerX.cs で、プレイヤーから離れる方向の Vector を取得するには、「敵の位置」から「プレイヤーの位置」を引きます。逆ではありません。 - 敵のボールが全部なくなってから新しい敵の集団を出現させる
ヒント - SpawnManagerX.cs で enemyCount 変数が正しく設定されていることを確認してください。 - パワーアップが一定時間だけ持続し、その時間が過ぎたら消えるようにする
ヒント - PlayerControllerX.cs の PowerupCoolDown コルーチンのコードは正しいようですが、このコルーチンは StartCoroutine() メソッドで実際に呼び出されない状態になっています。 - 最初は 1 体、次は 2 体、その次は 3 体...というように、敵の集団が出現するごとに 1 体ずつ出現数を増やす
ヒント - SpawnManagerX.cs の敵を出現させる for ループ で enemiesToSpawn パラメータを使用します。 - 敵のボールが「Player Goal」オブジェクトに向かって動いていくようにする
ヒント - EnemyX.cs で「NullReferenceException: Object reference not set to an instance of an object」というエラーが出る状態になっています。playerGoal オブジェクトが割り当てられていないようです。 - ボーナス課題 - プレイヤーがスペースキーを押したときスピードアップするようにして、スピードアップの時にパーティクルエフェクトを発生させる
ヒント - PlayerController で、スペースキーが押されたとき「Impulse」で力を加える単純な if ステートメントを追加します。パーティクルエフェクトを追加するには、最初に Focal Point の子オブジェクトとしてアタッチします。 - ボーナス - 敵の集団が出現するたびに、敵のスピードを少しずつ上げていくようにする
ヒント - SpawnManagerX.cs で敵の速度を管理し、増加させます。次に EnemyX.cs で、その速度変数を参照して Start() で設定します。