質問編集履歴
2
実行したいことをより明確に記述しました
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
実行したいことをより明確に記述しました
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
|
-
|
62
|
+
for (int i = 0; i <= 8; i++)
|
62
|
-
|
63
|
+
{
|
63
|
-
|
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
|
-
|
68
|
+
a.SetActive(false);
|
66
|
-
|
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
|
-
|
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
|
-
|
203
|
+
rightbar[0] = true;
|
72
|
-
|
204
|
+
Debug.Log("OK右1");
|
73
205
|
}
|
74
|
-
else if
|
206
|
+
else if(migibapos.x < 3.32f || migibapos.x > 3.551f)
|
75
207
|
{
|
76
|
-
a.SetActive(true);
|
77
|
-
|
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.rightbarとleftbarがそれぞれtrueのとき(計81パターン)に実行したいのが、質問のスクリプトの内容です。
|
85
|
-
|
86
|
-
質問内容をまとめると、「計81個に及ぶ処理を簡単に済ませるには、どのような方法がベストでしょうか?」
|