発射するたびに、Prefabの種類が変わっていく仕組みをつくってみましょう。
クリックで発射すれば、3種類のボールが、順番に切り替わっていきます。
関連記事:
1秒おきにPrefabを変える
種類の違うオブジェクトを順番に生成する
ボタンによってPrefabの種類を変える
360°全方位に向けて発射
Prefabの準備
Sphereを3個作成して色をつけ、名前をそれぞれ次のように変更します。
3つのBallすべてにリジッドボディを追加します。
コンポーネントを追加 > 物理 > リジッドボディ
それぞれプロジェクトビューにドラッグ&ドロップし、Prefab化します。
Ballの元データは削除しておきましょう。
配列の中にPrefabを入れる
空のオブジェクトを作成します。
ClickShot.csを作成し、GameObjectに追加します。
ClickShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickShot : MonoBehaviour { public GameObject[] ballArray; private int count; void Start() { count = 0; } void Update() { if(count < ballArray.Length) { if (Input.GetMouseButtonDown(0)) { GameObject ball = GameObject.Instantiate (ballArray[count])as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; ball.GetComponent<Rigidbody>().AddForce(dir * 3000); count++; } } else { count = 0; } } } |
GameObjectのインスペクターに、サイズというフィールドが出来ます。
使いたいPrefabの数は3個なので、「3」と入力します。
すると、要素0~2のフィールドが出来ます。
ここに、Ballのプレハブデータ1~3を入れましょう。
ゲームプレイしてみましょう。
ball.Array.Lengthは、要素の数を表し、この場合は要素0、1、2の合計3個になります。
クリックでボールを発射するたびに、countを1ずつ増やします。
countが3を下回っている間は、countどおり順番にBallの1~3を発射。
countが3以上になれば、countを0に戻しています。
関連記事:
1秒おきにPrefabを変える
種類の違うオブジェクトを順番に生成する
ボタンによってPrefabの種類を変える
360°全方位に向けて発射