並べたPrefabを、同時に飛ばせるように、スクリプトを作成しましょう。
クリックすると、5個のSphereが横並びになり、1秒経つと同時に飛んでいきます。
関連記事:
静止中のオブジェクトをクリックで飛ばす
同じサイズだけ位置をずらしてPrefab生成
3秒おきに出現して撃ってくる
落としたボールを1秒後に補充
複数地点から順番にPrefabを生成
配列にある複数オブジェクトを一気に出す
ボールのPrefabデータを作成
Sphereを作成し、リジッドボディを追加します。
SphereShot.csを作成し、Sphereに追加します。
SphereShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereShot : MonoBehaviour { private float force = 100; Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); rb.isKinematic = true; Invoke("Shot", 1.0f); } void Shot() { rb.isKinematic = false; rb.AddForce(0, 0, force, ForceMode.Impulse); } } |
Sphereをプロジェクトビューにドラッグ&ドロップし、Prefab化します。
Sphereの元データは削除しましょう。
横並びのプレハブが同時に飛ぶ
続いて、ボール生成のプログラムを作りましょう。
空のオブジェクトを作成します。
Spawn.csを作成し、GameObjectに追加します。
Spawn.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 34 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawn : MonoBehaviour { public GameObject ball; float distance; Vector3 pos; void Start() { pos = new Vector3(-5,0,0); distance = 1.5f; } void Update() { if(Input.GetMouseButtonDown(0)) { SpawnStart(); } } void SpawnStart() { for (int i=0; i<5; i++) { pos.x += distance; Instantiate(ball, pos, Quaternion.identity); } pos = new Vector3(-5,0,0); } } |
Ballのフィールドに、Sphereを入れます。
ゲームプレイしてみましょう。
クリックすると、5個のSphereが並び、1秒たてば飛んで行きます。
関連記事:
静止中のオブジェクトをクリックで飛ばす
同じサイズだけ位置をずらしてPrefab生成
3秒おきに出現して撃ってくる
落としたボールを1秒後に補充
複数地点から順番にPrefabを生成
配列にある複数オブジェクトを一気に出す