質問編集履歴

3

修正

2021/09/01 09:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -222,9 +222,9 @@
222
222
 
223
223
  hidarihidariba = GameObject.Find("hidariba");
224
224
 
225
- a = GameObject.Find("aruku2");
225
+ a = GameObject.Find("A");
226
-
226
+
227
- b = GameObject.Find("syuzinkotyuni");
227
+ b = GameObject.Find("B");
228
228
 
229
229
  }
230
230
 

2

詳細な記述の追加

2021/09/01 09:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -278,6 +278,8 @@
278
278
 
279
279
  }
280
280
 
281
+      というような感じで同じような処理が続いていきます。
282
+
281
283
  }
282
284
 
283
285
  }

1

詳細な記述の追加

2021/09/01 01:06

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Unityでオブジェクトの切り替えをSetActive等の方法で実行したい
1
+ Unityでオブジェクトの切り替えをしたい
test CHANGED
@@ -181,3 +181,113 @@
181
181
 
182
182
 
183
183
  Debug.Logで指定の領域がちゃんと機能していることは確認済みです。エラーもないです。 [SerializeField] で書けば非アクティブ状態のオブジェクトも取得できるとの情報があったので、そうしましたが、目的は達成できませんでした。となると、SetActiveの使い方が間違っているのでしょうか?
184
+
185
+
186
+
187
+ ### 追記
188
+
189
+ ```C#
190
+
191
+ using System.Collections;
192
+
193
+ using System.Collections.Generic;
194
+
195
+ using UnityEngine;
196
+
197
+
198
+
199
+ public class PlayerManager : MonoBehaviour
200
+
201
+ {
202
+
203
+ public GameObject migimigiba;
204
+
205
+ public GameObject hidarihidariba;
206
+
207
+
208
+
209
+ GameObject a;
210
+
211
+ GameObject b;
212
+
213
+
214
+
215
+
216
+
217
+ void Start()
218
+
219
+ {
220
+
221
+ migimigiba = GameObject.Find("migiba");
222
+
223
+ hidarihidariba = GameObject.Find("hidariba");
224
+
225
+ a = GameObject.Find("aruku2");
226
+
227
+ b = GameObject.Find("syuzinkotyuni");
228
+
229
+ }
230
+
231
+
232
+
233
+ // Update is called once per frame
234
+
235
+ void Update()
236
+
237
+ {
238
+
239
+ if(migimigiba.GetComponent<BluebarMove>().rightbar[0] == true && hidarihidariba.GetComponent<RedbarMove>().leftbar[0] == true)
240
+
241
+ {
242
+
243
+ a.transform.position = new Vector3(-4.2f, -0.19f, 0);
244
+
245
+ b.transform.position = new Vector3(-1.6f, -0.19f, 0);
246
+
247
+ }
248
+
249
+ else
250
+
251
+ {
252
+
253
+ a.transform.position = new Vector3(-1.63f, -0.19f, 0);
254
+
255
+ b.transform.position = new Vector3(-4.13f, -0.19f, 0);
256
+
257
+ }
258
+
259
+
260
+
261
+ if (migimigiba.GetComponent<BluebarMove>().rightbar[0] == true && hidarihidariba.GetComponent<RedbarMove>().leftbar[1] == true)
262
+
263
+ {
264
+
265
+ a.transform.position = new Vector3(-4.2f, -0.19f, 0);
266
+
267
+ b.transform.position = new Vector3(-1.6f, -0.19f, 0);
268
+
269
+ }
270
+
271
+ else
272
+
273
+ {
274
+
275
+ a.transform.position = new Vector3(-1.63f, -0.19f, 0);
276
+
277
+ b.transform.position = new Vector3(-4.13f, -0.19f, 0);
278
+
279
+ }
280
+
281
+ }
282
+
283
+ }
284
+
285
+ ```
286
+
287
+ というような感じで、for文ではなく上記のように(rightbar[0]かつleftbar[0]のとき,rightbar[0]かつleftbar[1]のとき, rightbar[0]かつleftbar[2]のとき ・・・と個別に処理を書くと目的の動作が実行されました。for文だとi=8, j=8の最後の処理しか実行されないとの指摘を受け、まさにその通りでした。
288
+
289
+
290
+
291
+ ただ、これだと(rightbar[0]かつleftbar[0]~rightbar[8]かつleftbar[8]の計81個の処理をコピペする必要があり、もっとスマートに書ける処理を考え中です。)
292
+
293
+ この記載しているスクリプト内で処理が完結できればいいなと思っています。