回答編集履歴

2

型のミスを修正

2021/12/19 08:05

投稿

sphim13
sphim13

スコア10

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  Vector3 position = positions[Random.Range(0, positions.Count)];
66
66
 
67
- GameObject[] target = Instantiate(obj, position, Quaternion.identity);
67
+ GameObject target = Instantiate(obj, position, Quaternion.identity);
68
68
 
69
69
  time = 0f;
70
70
 
@@ -100,4 +100,4 @@
100
100
 
101
101
 
102
102
 
103
- **一応Instantiateの部分「GameObject[] target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**
103
+ **一応Instantiateの部分「GameObject target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**

1

間違いを修正しました。

2021/12/19 08:05

投稿

sphim13
sphim13

スコア10

test CHANGED
@@ -18,4 +18,86 @@
18
18
 
19
19
  - **positionをpositionsに**
20
20
 
21
- - **indexの最大値 = 要素数 - 1なので position.Count - 1 にする**
21
+ - ~~**indexの最大値 = 要素数 - 1なので position.Count - 1 にする**~~
22
+
23
+
24
+
25
+ 追記
26
+
27
+ ```c#
28
+
29
+ [SerializeField]private GameObject obj;
30
+
31
+
32
+
33
+ //public List<Transform> positions;
34
+
35
+ [SerializeField]private List<Vector3> positions = new List<Vector3>(){
36
+
37
+ //初期値を設定
38
+
39
+ new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(0f,1f,0f),new Vector3(0f,0f,1f)
40
+
41
+ };
42
+
43
+ private float time;
44
+
45
+
46
+
47
+ void Update()
48
+
49
+ {
50
+
51
+ //time = time + Time.deltaTime;
52
+
53
+ time += Time.deltaTime;
54
+
55
+
56
+
57
+ float limitTime = 1.0f;
58
+
59
+ if (time > limitTime)
60
+
61
+ {
62
+
63
+ //Vector3 position = positions[Random.Range(0, positions.Count -1)];
64
+
65
+ Vector3 position = positions[Random.Range(0, positions.Count)];
66
+
67
+ GameObject[] target = Instantiate(obj, position, Quaternion.identity);
68
+
69
+ time = 0f;
70
+
71
+ }
72
+
73
+ }
74
+
75
+ ```
76
+
77
+ 修正点
78
+
79
+ **もしインスペクター上に入力項目を表示したいだけならpublic修飾子を付けるのではなく[SerialisedField]を使ったほうがいいと思います(スコープはprivateのままでinspector上に表示する)**
80
+
81
+
82
+
83
+ **objの生成場所のみを指定したいのならTransform型を使うのではなくVector3型を使うだけで十分かと思います。(Transform.positionと同じ型)**
84
+
85
+
86
+
87
+ **リストに初期値を一応設定していますがinspector上で値を入力するなら消しても構わないです({}の部分)script上で記入する場合は逆にinspector上で変更されないように[SerializedField]を消してください**
88
+
89
+
90
+
91
+ **timeの部分はこちらのほうが見やすいと思ってこうしました。やってることは同じです。**
92
+
93
+
94
+
95
+ **1.0fと記入するよりlimitTimeという変数を用いたほうが可読性が高くなると思います**
96
+
97
+
98
+
99
+ **[訂正] Random.Rangeのint型を対象としたものは0~10の範囲を設定したとき実際には0~9の中の整数を選択するようなのでRandom.Range(0, positions.Count)が正しいです。すみません...**
100
+
101
+
102
+
103
+ **一応Instantiateの部分「GameObject[] target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**