数秒おきに回転しながら、前方に向けてミサイルを発射できるように、スクリプトを作ってみましょう。
今回は、3秒おきに回転しつつボールを発射し、弾幕のような動きを付けていきます。
全方位に向けて何かを飛ばす敵キャラなど、いろいろなシーンで使えそうな仕組みです。
関連記事:
弾幕のように全方向へ発射するしくみ
全方位に向けてランダム発射
プレハブ出現のたびに角度をランダムで変化
前後左右へ順番にボール発射
n秒おきに発射をくり返す
指定の座標からn秒おきに発射
Instantiateでオブジェクトの角度を変える
右回転と左回転をくり返す
3秒おきに出現して撃ってくる
1秒経てば0.5秒おきに実行する
全方位へ回転しながら飛ばす
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
Cubeを作成します。
ShotScript.csを作成して、Cubeに追加。
ShotScript.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 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShotScript : MonoBehaviour { [SerializeField] GameObject prefab; private float time; void Start() { time = 3.0f; } void Update() { time -= Time.deltaTime; if(time <= 0) { StartCoroutine("RotateMove"); time = 3.0f; } } IEnumerator RotateMove() { for (int turn=0; turn<72; turn++) { transform.Rotate(0, 5, 0); yield return new WaitForSeconds(0.01f); GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * 300); } } } |
プレハブのフィールドに、Sphereを入れます。
ゲームプレイしましょう。
3秒おきにCubeが回転し、360°に向けて弾幕のように発射します。
関連記事:
弾幕のように全方向へ発射するしくみ
全方位に向けてランダム発射
プレハブ出現のたびに角度をランダムで変化
前後左右へ順番にボール発射
n秒おきに発射をくり返す
指定の座標からn秒おきに発射
Instantiateでオブジェクトの角度を変える
右回転と左回転をくり返す
3秒おきに出現して撃ってくる
1秒経てば0.5秒おきに実行する