前後左右の方向にむけて、順番に発射できるしくみをつくりましょう。
前、右、後ろ、左の順番に、1秒おきにボール発射をくり返します。
割った余りの数値を利用して、4方向への発射をループさせています。
関連記事:
全方位に向けてランダム発射
360°全方位に向けて発射
AddForceを使ってプレハブを前方へ飛ばす
オブジェクトを真上に打ち上げる
n秒おきに発射をくり返す
指定の座標からn秒おきに発射
並べたPrefabを左から順に発射
4方向への発射を順に繰り返す
空のオブジェクトを作成します。
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップして、プレハブ化します。
Sphereの元データは削除します。
BallShot.csを作成し、GameObjectに追加します。
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; private float time; private bool isShot; void Start() { time = 0; isShot = false; } void Update() { time += Time.deltaTime ; if (Mathf.Floor(time) % 4 == 0 && !isShot) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * 3000); isShot = true; } if (Mathf.Floor(time) % 4 == 1 && isShot) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.right * 3000); isShot = false; } if (Mathf.Floor(time) % 4 == 2 && !isShot) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward*-1 * 3000); isShot = true; } if (Mathf.Floor(time) % 4 == 3 && isShot) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.right*-1 * 3000); isShot = false; } } } |
プレハブのフィールドに、Sphereのプレハブデータを入れます。
ゲームプレイしてみましょう。
前後左右の4方向に向けて、順番に1秒おきに発射します。
関連記事:
全方位に向けてランダム発射
360°全方位に向けて発射
AddForceを使ってプレハブを前方へ飛ばす
オブジェクトを真上に打ち上げる
n秒おきに発射をくり返す
指定の座標からn秒おきに発射
並べたPrefabを左から順に発射