Unityで弾丸(に見立てたSphere)をランダムで生成して向かってくるようにした

今回は弾丸を生成して自分の方へ向かってくるようにしました。作業するときはBOSEのSOUNDWEARを使用すると周りの音も適度に聞こえて音楽も聞こえて作業しやすいです。

今回実施したこと

ある位置から弾をランダムで発射する

この処理は、まず以下の準備が必要。

  1. 弾を動かすためのスクリプト
  2. 弾のPrefabs
  3. 弾のPrefabsをランダムで生成するスクリプト
public class BulletController : MonoBehaviour {

    public float advanceBullet = -0.3f;
	
	void Update () {
               transform.Translate(0,0,this.advanceBullet);
               if (transform.position.z < -10.0f) {
                     Destroy(gameObject);
               }
	}
}

これは単純に対象のオブジェクトをZ軸方向に毎フレーム-0.3進めています。

  • 弾のPrefabs

これは、HierarcyでSphereを作成し、Project配下に持ってきました。この時にスクリプトをアタッチしておくとスクリプトがアタッチされたままPrefabs化できます。

public class BulletGenerator : MonoBehaviour {

    public GameObject BulletPrefabs;
    float span = 1.0f;
    float delta = 0;

	void Update () {
        this.delta += Time.deltaTime;
        if (this.delta > this.span) {
            this.delta = 0;
            GameObject item = Instantiate(BulletPrefabs) as GameObject;
            float x = Random.Range(-1, 1);
            float y = Random.Range(-1, 1);
            item.transform.position = new Vector3(x, y, 20);
        }
    }
}

上記で1秒間毎に弾を生成しています。弾が生成される感覚を短くしたいときはspanの値を変えれば可能です。

感想

次は、以下の処理を追加する

  • 剣にあたったら弾が消失
  • 弾の残像
  • 弾の予測線
  • 弾を切った時のエフェクト
  • ステージ