プレハブ(Prefab)を連続して生成していて、ある条件になれば生成を止める仕組みをつくりましょう。
ここでは、1秒おきにボールを生成して、5秒経過すれば生成しないようにします。
関連記事:
指定数になればPrefabの生成を止める
制限時間になれば停止する
制限時間になればPrefab生成を止める
Sphereプレハブを用意
Sphereのプレハブを用意して、リジッドボディを追加します。
Use Gravityのチェックは外しています。
SphereMove.cs作成して、Sphereプレハブに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { rb.AddForce(new Vector3(0,0,5)); } } |
SphereをZ方向に動くスクリプトです。
5秒以内であれば生成
Instantiateをつくるために、空のオブジェクトを作成します。
GameManager.csの名前でスクリプトを作成し、GameObject(空のオブジェクト)に追加します。
GameManager.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 GameManager : MonoBehaviour { [SerializeField] GameObject ball; private float countTime; private float timer; void Start() { countTime = 0; timer = 0; } void Update() { countTime += Time.deltaTime; timer += Time.deltaTime; //5秒以内であれば実行 if(timer <= 5 ) { //1秒おきに生成 if(countTime >= 1) { countTime = 0; Instantiate(ball,new Vector3(0, 0, 0),Quaternion.identity); } } } } |
Ballのフィールドには、Sphereプレハブを入れます。
プレイしてみましょう。
関連記事:
指定数になればPrefabの生成を止める
制限時間になれば停止する
制限時間になればPrefab生成を止める