
レッスン 5.1 - マウスでクリックゲーム
Tutorial
Beginner
+0XP
60 mins
(137)
Unity Technologies

概要:
いよいよ最終ユニットです。まず、新しいプロジェクトを作成してスターターファイルをインポートし、ゲームのビューを 2D に切り替えます。次に、プレイヤーがクリックするオブジェクトのリストを作成します。3 種類の「クリックする」オブジェクトと 1 つの「クリックしてはいけない」オブジェクトです。クリックする標的は、マップの下のランダムな位置に出現した後、空中に向かって回転しながら打ち上げられます。空中に浮かんだオブジェクトをクリックすると破壊することができます。
プロジェクトの成果物:
3 つの「クリックする」標的のオブジェクトと 1 つの「クリックしてはいけない」標的のオブジェクトが画面下のランダムな位置に出現し、ランダムな力とトルクが掛かった状態で空中に打ち上げられます。これらの標的は、プレイヤーがクリックしたり、境界の外に落ちて行ったりすると破棄されます。
Resources
1. 導入
2. プロジェクトを作成し、2D ビューに切り替える
新しいプロジェクトを作って、スターターファイルをダウンロードし、準備を整えて実行できる状態にしましょう...これが最後です。
- Unity Hub を開き、コースディレクトリ内に「Prototype 5」を、正しいバージョンの 3D で作成します。
- 動画で説明されているリンクをクリックして Prototype 5 のスターターファイルにアクセスし、ダウンロードして Unity にインポートします。
- Prototype 5 のシーンを開き、Sample Scene を保存せずに削除します。
- シーンビューの 2D アイコンをクリックして、シーンビューを 2D にします。
- (オプション)背景のテクスチャと色、および境界線の色を変更します。
3. クリックする標的・クリックしてはいけない標的を作る
このゲームにまず必要なのは、クリックする 3 つのオブジェクトと、避けなければならない 1 つのオブジェクトです。どれをクリックするべきオブジェクトにして、どれを避けるべきオブジェクトにするかは皆さん次第です。
- Library から、3 つのクリックするべき(「good」)オブジェクトと、1 つのクリックしてはいけない(「bad」)オブジェクトをシーンにドラッグし、それぞれ「Good 1」、「Good 2」、「Good 3」、「Bad 1」に名前を変更します。
- Rigid Body と Box Collider コンポーネントを追加し、Collider がオブジェクトを適切に囲むようにします。
- 新しく Scripts フォルダーを作成し、その中に新しく「Target.cs」スクリプトを作成し、標的オブジェクトにアタッチします。
- 4 つの標的オブジェクトをすべて Prefabs フォルダーにドラッグしてオリジナルのプレハブを作成し、標的オブジェクト自体はシーンから削除します。
4. オブジェクトを空中にランダムに打ち上げる
1 つのスクリプトに標的プレハブを 4 つ設定しました。次は、ランダムな力、トルク、位置を決めて、標的を空中に打ち出すようにしましょう。
- Target.cs で、新しく private Rigidbody targetRb; を宣言し、Start() で初期化します。
- Start() で、ランダムな速度を掛けた上向きの力をリジッドボディに加えます。
- ランダムな x、y、z の値でトルクを追加します。
- ランダムな x の値で位置を設定します。
5. 散らかったコードを新しいメソッドで置き換える
Start() 関数に、ランダムな力、トルク、位置が残っていて乱雑で読みにくい状態になっているので、これらのコードをわかりやすいな名前のカスタムメソッドを新しく作って、その中に格納します。
- Declare and initialize new private float variables for minSpeed, maxSpeed, maxTorque, xRange, and ySpawnPos;
- Create a new function for Vector3 RandomForce() and call it in Start()
- Create a new function for float RandomTorque(), and call it in Start()
- Create a new function for RandomSpawnPos(), have it return a new Vector3 and call it in Start()
- minSpeed、maxSpeed、maxTorque、xRange、ySpawnPos という名前の private な float 型変数を宣言し、初期化します。
- 新しい関数 Vector3 RandomForce() を作成し、Start() で呼び出します。
- 新しい関数 float RandomTorque() を作成し、Start() で呼び出します。
- 新しい関数 Vector3 RandomSpawnPos() を作成し、Start() で呼び出します。
6. Game Manager にオブジェクトのリストを作る
次にやるべきことは、これらのオブジェクトを出現させるときに使うオブジェクトのリストを作成することです。こうしたオブジェクトを出現させる機能のためにスポーンマネージャを作るのではなく、ここから後の部分で、ゲームの状態もまとめてコントロールするゲームマネージャを作ります。
- 新しく空のオブジェクト「Game Manager」を作成し、新しく GameManager.cs スクリプトを作ってアタッチしてから、スクリプトを開きます。
- 新しく public List<GameObject> targets を宣言し、Game Manager のインスペクターでリストの Size を 4 に変更し、プレハブを割り当てます。
7. オブジェクトを出現させるコルーチンを作る
オブジェクトのプレハブのリストができたので、コルーチンと新しい種類のループを使ってゲーム内でリスト内のプレハブをインスタンス化しましょう。
- 新しく private float spawnRate 変数を宣言して初期化します。
- 新しく IEnumerator SpawnTarget() メソッドを作成します。
- 新しいメソッドの中で、while(true) に入り、その中で 1 秒待ち、ランダムなインデックスを生成し、ランダムに選んだターゲットを出現させます。
- Start() で、StartCoroutine メソッドを使用してオブジェクトを出現させ始めます。
8. クリックとセンサーで標的を破壊する
標的が出現して空中に打ち上げられるようになりました。次は、これをクリックで破壊する方法が必要です。また、画面の下に落ちていった標的を破壊する仕組みも必要です。
- Target.cs に新しいメソッド private void OnMouseDown() { } を追加し、そのメソッド内で gameObject を破棄します。
- 新しいメソッド private void OnTriggerEnter(Collider other) { } を追加し、そのメソッド内で gameObject を破棄します。
9. レッスンのまとめ
新しい機能:
- ランダムなオブジェクトが間隔をおいて空中に打ち上げられる
- 物体にランダムな速度、位置、トルクを与える
- オブジェクトをクリックすると破壊される
新しい概念とスキル:
- 2Dビュー
- AddTorque
- ゲームマネージャー
- リスト
- while ループ
- マウスイベント
次のレッスン:
- エフェクトを追加して、スコアを記録できるようにしましょう。