弾幕シューティングを作っています。その弾幕の種類で、図形を形成してから一斉に弾を発射させるという弾幕を作りたいです。
現在図形を計算し配置させるところまではできました。
問題点は一斉に動かすやり方がわからないことです。色々調べましたが、一斉に動くんじゃなく生成されたところから連続で動いてしまいます。
リストに入ってるゲームオブジェクトのスクリプトを一気に全部動かしたいです。
図解
理想は↓から
こう
現在はこう
また弾の移動はプレハブ化されたオブジェクトにアタッチされており、それを切り替えることにより動かしています。
上の理想画像は手動で切り替えております。
この切り替え操作がうまくいきません。
コードです
C#
1 public float size;//大きさ 2 public GameObject bullet;//プレハブ化された弾 3 public float speed;//生成スピード 4 public GameObject origin;//中心 5 private float a = 0;//角度 6 public float n;//図形を形作る変数1 7 public float k;//図形を形作る変数2 8 public int cycle;//回転周期 9 List<GameObject> bullets;//リスト 10 EnemyBulletDirection ebd; //弾を動かすスクリプト 11 void Start() 12 { 13 ebd = bullet.GetComponent<EnemyBulletDirection>(); 14 bullet.GetComponent<EnemyBulletDirection>().enabled = false; 15 } 16void Update() 17 { 18 if (a < Mathf.PI * 2 * cycle) 19 { 20 bullets = new List<GameObject>(); 21 float r = size * Mathf.Sin(n * a); 22 float x = transform.position.x; 23 x = r * Mathf.Sin(k * a); 24 float z = transform.position.z; 25 z = r * Mathf.Cos(k * a); 26 bullets.Add(Instantiate(bullet, bullet.transform.position =new Vector3(this.transform.position.x + x, 0, this.transform.position.z + z), transform.rotation)); 27 for (int i = 0; i < bullets.Count; i++) 28 {//中心に向かって進むように計算 29 bullets[i].transform.LookAt(origin.transform); 30 } 31 a += speed; 32 } 33 if (a >= Mathf.PI * 2 * cycle) 34 { 35 a = 0; 36 37 bullet.GetComponent<EnemyBulletDirection>().enabled = true; 38 } 39 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/21 00:52