プレハブを発射する際、出現するたびに回転角が変わるように、スクリプトを作成してみましょう。
1秒おきにSphereのプレハブを飛ばします。
発射されるたびに、ランダムで角度が変わっていきます。
関連記事:
1秒おきにランダムで回転角を変える
発射したオブジェクトを回転させる
全方位に向けてランダム発射
360°全方位に向けて発射
プレーヤーの向いている方向に発射する
弾幕のように全方向へ発射するしくみ
n秒おきに回転しながら前方へ発射
Instantiateでオブジェクトの角度を変える
誤差をつけてあえて命中率を下げる
プレハブの角度を毎回変える
Sphereを作成し、リジッドボディを追加します。
BallMove.csを作成し、Sphereに追加します。
BallMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallMove : MonoBehaviour { private int vecX; private int vecY; void Start() { vecX = Random.Range(-20,20); vecY = Random.Range(-20,20); transform.Rotate(vecX,vecY,0); } void Update() { GetComponent<Rigidbody>().velocity = transform.forward.normalized * 10; } } |
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
空のオブジェクトを作成します。
BallShot.csを作成し、GameObject(空のオブジェクト)に追加します。
BallShot.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { [SerializeField] GameObject ball; private float time; void Start() { time = 0; } void Update() { time -= Time.deltaTime; if(time <= 0) { Instantiate(ball, this.transform.position, Quaternion.identity); time = 1; } } } |
Ballのフィールドに、Sphereを入れます。
ゲームプレイしましょう。
プレハブが生成されるたびに、角度がランダムで変わって発射されます。
関連記事:
1秒おきにランダムで回転角を変える
発射したオブジェクトを回転させる
全方位に向けてランダム発射
360°全方位に向けて発射
プレーヤーの向いている方向に発射する
弾幕のように全方向へ発射するしくみ
n秒おきに回転しながら前方へ発射
Instantiateでオブジェクトの角度を変える
誤差をつけてあえて命中率を下げる