teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

型のミスを修正

2021/12/19 08:05

投稿

sphim13
sphim13

スコア10

answer CHANGED
@@ -31,7 +31,7 @@
31
31
  {
32
32
  //Vector3 position = positions[Random.Range(0, positions.Count -1)];
33
33
  Vector3 position = positions[Random.Range(0, positions.Count)];
34
- GameObject[] target = Instantiate(obj, position, Quaternion.identity);
34
+ GameObject target = Instantiate(obj, position, Quaternion.identity);
35
35
  time = 0f;
36
36
  }
37
37
  }
@@ -49,4 +49,4 @@
49
49
 
50
50
  **[訂正] Random.Rangeのint型を対象としたものは0~10の範囲を設定したとき実際には0~9の中の整数を選択するようなのでRandom.Range(0, positions.Count)が正しいです。すみません...**
51
51
 
52
- **一応Instantiateの部分「GameObject[] target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**
52
+ **一応Instantiateの部分「GameObject target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**

1

間違いを修正しました。

2021/12/19 08:05

投稿

sphim13
sphim13

スコア10

answer CHANGED
@@ -8,4 +8,45 @@
8
8
  としてはどうでしょうか?
9
9
  修正点
10
10
  - **positionをpositionsに**
11
- - **indexの最大値 = 要素数 - 1なので position.Count - 1 にする**
11
+ - ~~**indexの最大値 = 要素数 - 1なので position.Count - 1 にする**~~
12
+
13
+ 追記
14
+ ```c#
15
+ [SerializeField]private GameObject obj;
16
+
17
+ //public List<Transform> positions;
18
+ [SerializeField]private List<Vector3> positions = new List<Vector3>(){
19
+ //初期値を設定
20
+ new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(0f,1f,0f),new Vector3(0f,0f,1f)
21
+ };
22
+ private float time;
23
+
24
+ void Update()
25
+ {
26
+ //time = time + Time.deltaTime;
27
+ time += Time.deltaTime;
28
+
29
+ float limitTime = 1.0f;
30
+ if (time > limitTime)
31
+ {
32
+ //Vector3 position = positions[Random.Range(0, positions.Count -1)];
33
+ Vector3 position = positions[Random.Range(0, positions.Count)];
34
+ GameObject[] target = Instantiate(obj, position, Quaternion.identity);
35
+ time = 0f;
36
+ }
37
+ }
38
+ ```
39
+ 修正点
40
+ **もしインスペクター上に入力項目を表示したいだけならpublic修飾子を付けるのではなく[SerialisedField]を使ったほうがいいと思います(スコープはprivateのままでinspector上に表示する)**
41
+
42
+ **objの生成場所のみを指定したいのならTransform型を使うのではなくVector3型を使うだけで十分かと思います。(Transform.positionと同じ型)**
43
+
44
+ **リストに初期値を一応設定していますがinspector上で値を入力するなら消しても構わないです({}の部分)script上で記入する場合は逆にinspector上で変更されないように[SerializedField]を消してください**
45
+
46
+ **timeの部分はこちらのほうが見やすいと思ってこうしました。やってることは同じです。**
47
+
48
+ **1.0fと記入するよりlimitTimeという変数を用いたほうが可読性が高くなると思います**
49
+
50
+ **[訂正] Random.Rangeのint型を対象としたものは0~10の範囲を設定したとき実際には0~9の中の整数を選択するようなのでRandom.Range(0, positions.Count)が正しいです。すみません...**
51
+
52
+ **一応Instantiateの部分「GameObject[] target =」を付け加えました。今後obj(正確にはobjのクローン体)を削除したいときはこいつをうまく使ってください。**