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

質問編集履歴

2

実行したいことをより明確に記述しました

2021/08/31 00:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -77,7 +77,7 @@
77
77
  }
78
78
  }
79
79
  ```
80
- とプログラムを変更しましたが、rightbar[0], leftbar[0]のときしか処理が実行されませんでした。エラーは出ないのでプログラム自体は正しいと思われるのですが、他の部分にミスがあるかもしれないので、別スクリプトのコードを補足情報として記載します。
80
+ とプログラムを変更しましたが、rightbar[0], leftbar[0]のときしか処理が実行されませんでした(rightnumrandom = 1, leftnumrandom = 1にしたら処理が実行、それ以外のrightnumrandom = 2などでは処理が実行されず)。エラーは出ないのでプログラム自体は正しいと思われるのですが、他の部分にミスがあるかもしれないので、別スクリプトのコードを補足情報として記載します。
81
81
 
82
82
  1.まず、1から9までの数字をランダムに決め、出た数字に合わせてbool型 rightarea,leftareaをtrueにします。
83
83
  ```ここに言語を入力

1

実行したいことをより明確に記述しました

2021/08/31 00:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -53,34 +53,275 @@
53
53
 
54
54
  if文で実行したい処理は全て同じ内容です。
55
55
 
56
+ 質問内容をまとめると、「計81個に及ぶ処理を簡単に済ませるには、どのような方法がベストでしょうか?」
57
+
56
- **試したこと**
58
+ **追記・補足情報**
57
- 例えばrightbar[0], leftbar[0]のようにゾロ目のパターンの処理は、
58
59
  ```ここに言語を入力
59
- void Update()
60
+ void Update()
60
61
  {
61
- for(int i = 0; i <= 8; i++)
62
+ for (int i = 0; i <= 8; i++)
62
- {
63
+ {
63
- if (migimigiba.GetComponent<BluebarMove>().rightbar[i] == true && hidarihidariba.GetComponent<RedbarMove>().leftbar[i] == true)
64
+ for (int j = 0; j <= 8; j++)
64
65
  {
66
+ if (migimigiba.GetComponent<BluebarMove>().rightbar[i] == true && hidarihidariba.GetComponent<RedbarMove>().leftbar[j] == true)
67
+ {
65
- a.SetActive(false);
68
+ a.SetActive(false);
66
- b.SetActive(true);
69
+ b.SetActive(true);
70
+ }
71
+ else
72
+ {
73
+ a.SetActive(true);
74
+ b.SetActive(false);
75
+ }
67
76
  }
77
+ }
78
+ }
79
+ ```
80
+ とプログラムを変更しましたが、rightbar[0], leftbar[0]のときしか処理が実行されませんでした。エラーは出ないのでプログラム自体は正しいと思われるのですが、他の部分にミスがあるかもしれないので、別スクリプトのコードを補足情報として記載します。
68
81
 
82
+ 1.まず、1から9までの数字をランダムに決め、出た数字に合わせてbool型 rightarea,leftareaをtrueにします。
83
+ ```ここに言語を入力
84
+ public class NumberController : MonoBehaviour
85
+ {
86
+ public Text rightnum;
87
+ public Text leftnum;
88
+ public int rightnumrandom;
89
+ public int leftnumrandom;
90
+
91
+ public bool[] rightarea = new bool[9];
92
+ public bool[] leftarea = new bool[9];
93
+
94
+
95
+ // Start is called before the first frame update
96
+ void Start()
97
+ {
98
+ for (int i = 0; i <= 8; i++)
99
+ {
100
+ rightarea[i] = false;
101
+ }
102
+
103
+ for (int i = 0; i <= 8; i++)
104
+ {
105
+ leftarea[i] = false;
106
+ }
107
+
108
+
109
+
110
+ rightnumrandom = Random.Range(1, 10);
111
+ //rightnumrandom = 1;
112
+ this.rightnum = GameObject.Find("RightNumText").GetComponent<Text>();
113
+ rightnum.text = rightnumrandom.ToString();
114
+
115
+ leftnumrandom = Random.Range(1, 10);
116
+ //leftnumrandom = 1;
117
+ this.leftnum = GameObject.Find("LeftNumText").GetComponent<Text>();
118
+ leftnum.text = leftnumrandom.ToString();
119
+
120
+ }
121
+
122
+ // Update is called once per frame
123
+ void Update()
124
+ {
125
+ if (rightnumrandom == 1)
126
+ {
127
+ rightarea[0] = true;
128
+ Debug.Log("右1");
129
+ }
130
+ //補足・・・rightarea[1]からrightarea[8]の処理(if文)も同じなので、割愛
131
+
132
+ if (leftnumrandom == 1)
133
+ {
134
+ leftarea[0] = true;
135
+ Debug.Log("左1");
136
+ }
137
+ //補足・・・leftarea[1]からleftarea[8]の処理(if文)も同じなので、割愛
138
+ }
139
+ }
140
+ ```
69
- if (migimigiba.GetComponent<BluebarMove>().rightbar[i] == false && hidarihidariba.GetComponent<RedbarMove>().leftbar[i] == false)
141
+ 2.次に、rightarea, leftareaの判定結果を元に、bool型 rightbar, leftbarをtrueまたはfalseにします。rightbarとleftbarはそれぞれ別のスクリプトで管理しており、内容はrightとleftの違いだけなので、以下にrightのときのスクリプトを記載します。
142
+ ```ここに言語を入力
143
+ public class BluebarMove : MonoBehaviour
144
+ {
145
+ GameObject rightleftnum;
146
+ public bool[] rightbar = new bool[9];
147
+
148
+
149
+ bool push = false;
150
+ GameObject Migibar;
151
+
152
+ void Start()
153
+ {
154
+ rightleftnum = GameObject.Find("RightLeftNum");
155
+ Migibar = GameObject.FindGameObjectWithTag("migibar");
156
+
157
+ for (int i = 0; i <= 8; i++)
158
+ {
159
+ rightbar[i] = false;
160
+ }
161
+
162
+ }
163
+
164
+ public void PushDown()
165
+ {
166
+ push = true;
167
+ }
168
+
169
+ public void PushUp()
170
+ {
171
+ push = false;
172
+ }
173
+
174
+
175
+ // Update is called once per frame
176
+ void Update()
177
+ {
178
+ if ((push == true) && (Migibar.transform.position.x > 1.41f))
179
+ {
180
+ Migibar.transform.Translate(-0.01f, 0, 0);
181
+ }
182
+ else if ((push == true) && (Migibar.transform.position.x <= 1.41f))
183
+ {
184
+ Migibar.transform.Translate(0, 0, 0);
185
+ }
186
+ else if ((push == false) && (Migibar.transform.position.x < 4.18f))
187
+ {
188
+ Migibar.transform.Translate(0.007f, 0, 0);
189
+ }
190
+ else if ((push == false) && (Migibar.transform.position.x >= 4.18f))
191
+ {
192
+ Migibar.transform.Translate(0, 0, 0);
193
+ }
194
+
195
+
196
+ Transform myTransform = this.transform;
197
+ Vector3 migibapos = myTransform.position;
198
+
199
+ if (rightleftnum.GetComponent<NumberController>().rightarea[0] == true)
200
+ {
201
+ if(migibapos.x <= 3.551f && migibapos.x >= 3.32f)
70
202
  {
71
- a.SetActive(true);
203
+ rightbar[0] = true;
72
- b.SetActive(false);
204
+ Debug.Log("OK右1");
73
205
  }
74
- else if (migimigiba.GetComponent<BluebarMove>().rightbar[i] == false || hidarihidariba.GetComponent<RedbarMove>().leftbar[i] == false)
206
+ else if(migibapos.x < 3.32f || migibapos.x > 3.551f)
75
207
  {
76
- a.SetActive(true);
77
- b.SetActive(false);
208
+ rightbar[0] = false;
209
+ Debug.Log("はずれた右1");
78
210
  }
79
- }
211
+ }
212
+
80
-
213
+ if(rightleftnum.GetComponent<NumberController>().rightarea[1] == true)
214
+ {
215
+ if (migibapos.x <= 3.32f && migibapos.x >= 3.089f)
216
+ {
217
+ rightbar[1] = true;
218
+ Debug.Log("OK右2");
219
+ }
220
+ else if (migibapos.x < 3.089f || migibapos.x > 3.32f)
221
+ {
222
+ rightbar[1] = false;
223
+ Debug.Log("はずれた右2");
224
+ }
225
+ }
226
+
227
+ if (rightleftnum.GetComponent<NumberController>().rightarea[2] == true)
228
+ {
229
+ if (migibapos.x <= 3.089f && migibapos.x >= 2.858f)
230
+ {
231
+ rightbar[2] = true;
232
+ Debug.Log("OK右3");
233
+ }
234
+ else if (migibapos.x < 2.858f || migibapos.x > 3.089f)
235
+ {
236
+ rightbar[2] = false;
237
+ Debug.Log("はずれた右3");
238
+ }
239
+ }
240
+
241
+ if (rightleftnum.GetComponent<NumberController>().rightarea[3] == true)
242
+ {
243
+ if (migibapos.x <= 2.858f && migibapos.x >= 2.627f)
244
+ {
245
+ rightbar[3] = true;
246
+ Debug.Log("OK右4");
247
+ }
248
+ else if (migibapos.x < 2.627f || migibapos.x > 2.858f)
249
+ {
250
+ rightbar[3] = false;
251
+ Debug.Log("はずれた右4");
252
+ }
253
+ }
254
+
255
+ if (rightleftnum.GetComponent<NumberController>().rightarea[4] == true)
256
+ {
257
+ if (migibapos.x <= 2.627f && migibapos.x >= 2.396f)
258
+ {
259
+ rightbar[4] = true;
260
+ Debug.Log("OK右5");
261
+ }
262
+ else if (migibapos.x < 2.396f || migibapos.x > 2.627f)
263
+ {
264
+ rightbar[4] = false;
265
+ Debug.Log("はずれた右5");
266
+ }
267
+ }
268
+
269
+ if (rightleftnum.GetComponent<NumberController>().rightarea[5] == true)
270
+ {
271
+ if (migibapos.x <= 2.396f && migibapos.x >= 2.165f)
272
+ {
273
+ rightbar[5] = true;
274
+ Debug.Log("OK右6");
275
+ }
276
+ else if (migibapos.x < 2.165f || migibapos.x > 2.396f)
277
+ {
278
+ rightbar[5] = false;
279
+ Debug.Log("はずれた右6");
280
+ }
281
+ }
282
+
283
+ if (rightleftnum.GetComponent<NumberController>().rightarea[6] == true)
284
+ {
285
+ if (migibapos.x <= 2.165f && migibapos.x >= 1.934f)
286
+ {
287
+ rightbar[6] = true;
288
+ Debug.Log("OK右7");
289
+ }
290
+ else if (migibapos.x < 1.934f || migibapos.x > 2.165f)
291
+ {
292
+ rightbar[6] = false;
293
+ Debug.Log("はずれた右7");
294
+ }
295
+ }
296
+
297
+ if (rightleftnum.GetComponent<NumberController>().rightarea[7] == true)
298
+ {
299
+ if (migibapos.x <= 1.934f && migibapos.x >= 1.703f)
300
+ {
301
+ rightbar[7] = true;
302
+ Debug.Log("OK右8");
303
+ }
304
+ else if (migibapos.x < 1.703f || migibapos.x > 1.934f)
305
+ {
306
+ rightbar[7] = false;
307
+ Debug.Log("はずれた右8");
308
+ }
309
+ }
310
+
311
+ if(rightleftnum.GetComponent<NumberController>().rightarea[8] == true)
312
+ {
313
+ if (migibapos.x <= 1.703f && migibapos.x >= 1.472f)
314
+ {
315
+ rightbar[8] = true;
316
+ Debug.Log("OK右9");
317
+ }
318
+ else if (migibapos.x < 1.472f || migibapos.x > 1.703f)
319
+ {
320
+ rightbar[8] = false;
321
+ Debug.Log("はずれた右9");
322
+ }
323
+ }
81
324
  }
82
-
325
+ }
83
326
  ```
84
- ば、こだけ行でうまく行くのかな期待しましたが、処理が全く実行されなかったの恐らく間違っているだと思います。
327
+ 3.rightbarleftbarがそtrueのとき(計81パターン)に実行質問スクリプトの内容です。
85
-
86
- 質問内容をまとめると、「計81個に及ぶ処理を簡単に済ませるには、どのような方法がベストでしょうか?」