敵キャラが座標をランダムで動きながら、発射してくる仕組みを作りましょう。
1秒おきにランダム移動し、こちらに向かってボールを打ち込んできます。
関連記事:
前方からボールがランダムで向かってくる
飛んできたボールをキャッチする
自機狙い(プレーヤーに向けた)発射 -3Dゲーム
音ゲーのノーツみたいなオブジェクト動作
周囲のあらゆる方向からボールが飛んでくる
複数ポイントがランダムで選択される
誤差をつけてあえて命中率を下げる
別オブジェクトの周りをランダム移動
3秒おきに出現と消滅をくり返す
3秒おきに出現して撃ってくる
ランダムで動きながら打ってくる敵キャラ
Cubeを作成し、位置と回転を変えます。
Sphereを作成し、リジッドボディを追加。
UseGravityのチェックを外します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
EnemyShot.csを作成し、Cubeに追加します。
EnemyShot.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyShot : MonoBehaviour { public GameObject ball; public float ballSpeed = 10.0f; private float time; private int vecX; private int vecY; void Start() { time = 1.0f; } void Update() { time -= Time.deltaTime; if(time <= 0.0f) { vecX = Random.Range(-3,3); vecY = Random.Range(0,3); transform.position = new Vector3(vecX, vecY, 10); var shot = Instantiate(ball, transform.position, Quaternion.identity); shot.GetComponent<Rigidbody>().velocity = transform.forward.normalized * ballSpeed; time = 1.0f; } } } |
Ballのフィールドに、Sphereを入れます。
ゲームプレイしてみましょう。
XとYの座標を1秒おきにランダムで動きながら、こちらに向けてボールが発射されます。
関連記事:
前方からボールがランダムで向かってくる
飛んできたボールをキャッチする
自機狙い(プレーヤーに向けた)発射 -3Dゲーム
音ゲーのノーツみたいなオブジェクト動作
周囲のあらゆる方向からボールが飛んでくる
複数ポイントがランダムで選択される
誤差をつけてあえて命中率を下げる
別オブジェクトの周りをランダム移動
3秒おきに出現と消滅をくり返す
3秒おきに出現して撃ってくる