プレハブの出てくる順番が3の倍数の時にスピードが上がるように、スクリプトを作成してみましょう。
クリックでSphereを生成すると、前に向かって移動します。
3個目、6個目、9個目と続くSphereは、速度がアップしています。
出てくる順が3の倍数のプレハブのみ速度アップ
空のオブジェクトを作成します。
SpawnScript.csを作成し、GameObject(空のオブジェクト)に追加します。
SpawnScript.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnScript : MonoBehaviour { public GameObject prefab; private Vector3 mousePosition; public static SpawnScript instance; public int count; public void Awake() { if(instance == null) { instance = this; } } void Update() { if (Input.GetMouseButtonDown(0)) { count++; mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } } } |
Sphereを作成し、リジッドボディを追加します。
BallSpeed.csを作成し、Sphereに追加します。
BallSpeed.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallSpeed : MonoBehaviour { public int number; public float speed; void Start() { number = SpawnScript.instance.count; speed = 10.0f; if(number % 3 == 0) { speed = 50.0f; } } void Update() { transform.Translate(0, 0, speed * Time.deltaTime); } } |
Sphereをプロジェクトビューにドラッグ&ドロップして、プレハブ化します。
Sphereの元データは消しておきます。
プレハブのフィールドに、Sphereを入れます。
ゲームプレイしましょう。
クリックでボールが発射されますが、出てくる順が3の倍数のボールだけ、スペードが上がります。
プレハブ側からnumber(生成順)を取得。
numberを割った余りが0のときに、スピードを50に変更しています。