発生している問題・エラーメッセージ
弾を二重に作って、発射させていますが、
移動先で作り始めると、移動前で作っていた弾の生成が途中で中断されてしまいます。
そして、移動先で、前回の続きから作り始めてしまいます。
最初の位置で弾が最後まで生成され終わり、その最中であっても、移動先で弾の生成を初めて終わらせたいです。
該当のソースコード
C#
1 //↓これのせい 2public IEnumerator Generate(GameObject prefab, int count, GameObject center, float distance, bool isLookAtCenter = true) 3 { 4 Vector3 uP = new Vector3(0, 1, 0); 5 //中心のオブジェクトの位置を取得 6 centerTP = center.transform.position; 7 8 //弾の生成 9 for (int i = 0; i < count; i++) 10 { 11 var position = centerTP + (Quaternion.Euler(0f, 0f, (360f / count) * i) * uP * distance); 12 var obj = Instantiate(prefab, position, Quaternion.identity); 13 }
二重にしたり角度を変えたりの処理は関係ないので省きました
試したこと
どうやら、for文でInstantiateを繰り返している途中で、コルーチンが呼び出されると、初期位置が更新されてしまうようです。
それに対応するために、for文が終了するまで、位置を更新しないにしたところ、案の定次の位置で生成が始まりませんでした。
もう、for文でInstantiateを繰り返している途中でも、並列にfor文を実行してもらうしかないと思うのですが、
どういった方法があるのでしょうか?
単純に2倍にfor文を増やして、片方が実行中は、もう片方で実行してもらうようにするしかないのですかね…
それとも、クラスとかを駆使すれば、簡単に並列処理出来るのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。