調べてみたのですが自分一人では原因がわからずじまいですので質問させていただきました。
やりたいこと
シーンAで配列を作成し任意の座標を格納
シーンBで配列から要素を取り出しそれを用いてプレハブからインスタンス化
格納した座標の中から重複しない数箇所(今回は5箇所)にオブジェクトを生成したい
発生している問題
実際に実行してみると座標(0,0)の地点に5つ重なった状態で生成されてしまう。
配列を作成するソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Coordinates : MonoBehaviour 6{ 7 //配列 8 public readonly static Vector2[] array = new Vector2[9]; 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 array[0] = new Vector2(-1.5f,-1.5f); 14 array[1] = new Vector2(-1.5f, 1.5f); 15 array[2] = new Vector2(-1.5f, 4.5f); 16 array[3] = new Vector2(1.5f,-1.5f); 17 array[4] = new Vector2(1.5f, 1.5f); 18 array[5] = new Vector2(1.5f, 4.5f); 19 array[6] = new Vector2(4.5f,-1.5f); 20 array[7] = new Vector2(4.5f, 1.5f); 21 array[8] = new Vector2(4.5f, 4.5f); 22 } 23 24 // Update is called once per frame 25 void Update() 26 { 27 28 } 29}
配列を利用してインスタンス化するソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using System.Linq; 4using UnityEngine; 5 6public class RandomMake : MonoBehaviour 7{ 8 public Transform squarePrefab; 9 // Start is called before the first frame update 10 void Start() 11 { 12 StartCoroutine(Landom()); 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 19 } 20 IEnumerator Landom() 21 { 22 Quaternion q = new Quaternion(); 23 q = Quaternion.identity; 24 25 yield return new WaitForSeconds(2.0f); 26 int a = Random.Range(0, 9); 27 Instantiate(squarePrefab, Coordinates.array[a], q); 28 29 int b; 30 do 31 { 32 b = Random.Range(0, 9); 33 } while (b == a); 34 Instantiate(squarePrefab, Coordinates.array[b], q); 35 36 int c; 37 do 38 { 39 c = Random.Range(0, 9); 40 } while (c == b | c == a); 41 Instantiate(squarePrefab, Coordinates.array[c], q); 42 43 int d; 44 do 45 { 46 d = Random.Range(0, 9); 47 } while (d == c | d == b | d == a); 48 Instantiate(squarePrefab, Coordinates.array[d], q); 49 50 int e; 51 do 52 { 53 e = Random.Range(0, 9); 54 } while (e == d | e == c | e == b | e == a); 55 Instantiate(squarePrefab, Coordinates.array[e], q); 56 } 57} 58
回答1件
あなたの回答
tips
プレビュー