3秒おきに出現して、こちらに向かって弾を撃ってくるオブジェクトを作成してみましょう。
今回の例では、ランダム位置に現れて、ボールを飛ばして消える敵キャラのような動きをつけみます。
関連記事:
敵キャラがランダム移動して発射
指定の座標からn秒おきに発射
円を描くように動きながら前方発射
n秒おきに回転しながら前方へ発射
1秒経てば0.5秒おきに実行する
Prefabを並べて一気に発射
n秒おきに現れて弾を飛ばす
Cubeと空のオブジェクトを作成します。
CubeのY軸を180度回転させて、手前に向けるようにします。
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、Prefab化します。
Sphereの元データは削除しておきます。
CubeMove.csを作成し、GameObject(空のオブジェクト)に追加します。
CubeMove.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 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public GameObject cube; private float time; private int vecX; private int vecY; public GameObject prefab; void Update() { time -= Time.deltaTime; if(time <= 0.0f) { StartCoroutine("CubeActive"); time = 3.0f; } } IEnumerator CubeActive() { vecX = Random.Range(-3,3); vecY = Random.Range(0,3); cube.transform.position = new Vector3(vecX, vecY, 0); cube.SetActive(true); yield return new WaitForSeconds(0.5f); GameObject ball = GameObject.Instantiate(prefab, cube.transform.position, Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * -500); yield return new WaitForSeconds(0.5f); cube.SetActive(false); } } |
2つのフィールドに、それぞれオブジェクトを入れます。
ゲームプレイしてみましょう。
3秒おきにCubeがランダムの位置に出現。
出現したタイミングで、手前に向かってボールを撃ってきます。
関連記事:
敵キャラがランダム移動して発射
指定の座標からn秒おきに発射
円を描くように動きながら前方発射
n秒おきに回転しながら前方へ発射
1秒経てば0.5秒おきに実行する
Prefabを並べて一気に発射