質問編集履歴

4

gif画像を追加

2021/05/26 12:41

投稿

omaetoomae
omaetoomae

スコア41

test CHANGED
File without changes
test CHANGED
@@ -330,6 +330,8 @@
330
330
 
331
331
  ```
332
332
 
333
+ ![イメージ説明](a9e9f233033a3538719e415db8634e50.gif)
334
+
333
335
  いろいろな部分を直しましたが、特に大きかった部分は
334
336
 
335
337
  ・「bool spawn」の部分を削除した

3

解決した方法を追加

2021/05/26 12:41

投稿

omaetoomae
omaetoomae

スコア41

test CHANGED
File without changes
test CHANGED
@@ -221,3 +221,119 @@
221
221
  しかし、黒のキューブの動きに合わせて変に動いてはいるので。反応はしていると思います。
222
222
 
223
223
  この挙動を改善できる方法がわかる方は教えてください。
224
+
225
+ ###解決した方法
226
+
227
+ ```C#
228
+
229
+ using System.Collections;
230
+
231
+ using System.Collections.Generic;
232
+
233
+ using UnityEngine;
234
+
235
+
236
+
237
+ public class Code : MonoBehaviour
238
+
239
+ {
240
+
241
+ public float spX;
242
+
243
+ public float spY;
244
+
245
+ void Start()
246
+
247
+ {
248
+
249
+ transform.position = new Vector2(spX,spY);
250
+
251
+ }
252
+
253
+ void Update()
254
+
255
+ {
256
+
257
+ Vector2 Ppos = GameObject.Find("Player").transform.position;//プレイヤーの座標をゲッチュ
258
+
259
+
260
+
261
+ Transform myTransform = this.transform;
262
+
263
+ Vector2 Mpos = myTransform.position;
264
+
265
+
266
+
267
+ if(Mpos.x < (Ppos.x -10)||(Ppos.x +10) < Mpos.x||Mpos.y < (Ppos.y -10)||(Ppos.y +14) < Mpos.y)
268
+
269
+ //もしオブジェクトが離れすぎた場合
270
+
271
+ {
272
+
273
+ float spXa = Random.Range((Ppos.x -10), (Ppos.x -3));//出現範囲(xの-)
274
+
275
+ float spXb = Random.Range((Ppos.x +3), (Ppos.x +10));//出現範囲(xの+)
276
+
277
+ float spYa = Random.Range((Ppos.y -10), (Ppos.y -3));//出現範囲(yの-)
278
+
279
+ float spYb = Random.Range((Ppos.y +7), (Ppos.y +14));//出現範囲(yの+)
280
+
281
+ int RX = Random.Range(1, 3);//確率1/2
282
+
283
+ int RY = Random.Range(1, 3);//確率1/2
284
+
285
+ if(RX == 1)//1が出た場合
286
+
287
+ {
288
+
289
+ spX = spXa;//代入
290
+
291
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
292
+
293
+ }
294
+
295
+ if(RX == 2)//2が出た場合
296
+
297
+ {
298
+
299
+ spX = spXb;//代入
300
+
301
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
302
+
303
+ }
304
+
305
+ if(RY == 1)//1が出た場合
306
+
307
+ {
308
+
309
+ spY = spYa;//代入
310
+
311
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
312
+
313
+ }
314
+
315
+ if(RY == 2)//2が出た場合
316
+
317
+ {
318
+
319
+ spY = spYb;//代入
320
+
321
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
322
+
323
+ }
324
+
325
+ }
326
+
327
+ }
328
+
329
+ }
330
+
331
+ ```
332
+
333
+ いろいろな部分を直しましたが、特に大きかった部分は
334
+
335
+ ・「bool spawn」の部分を削除した
336
+
337
+ ・//もしオブジェクトが離れすぎた場合のif文の計算にミスがあった
338
+
339
+ でした!

2

新しい不具合が発生した

2021/05/26 12:36

投稿

omaetoomae
omaetoomae

スコア41

test CHANGED
File without changes
test CHANGED
@@ -77,3 +77,147 @@
77
77
  初投稿ですので、何か足りない部分があれば教えてください。
78
78
 
79
79
  初めて作っている超初心者なので、できるだけ分かりやすく教えていただけると助かります。
80
+
81
+
82
+
83
+ ###その後
84
+
85
+ 回答にもあった、"選択のための乱数を生成して,その乱数の値によってどちらを用いかを判断するような処理"を参考にして、ランダムで1か2が出るものを作り、1が出た場合は+側に、2が出た場合はー側に設定する。(+とーが出る確率は2分の1)
86
+
87
+ というコードを作ってみました。
88
+
89
+ ### 変更したソースコード
90
+
91
+ ```C#
92
+
93
+ using System.Collections;
94
+
95
+ using System.Collections.Generic;
96
+
97
+ using UnityEngine;
98
+
99
+
100
+
101
+ public class Code : MonoBehaviour
102
+
103
+ {
104
+
105
+ public bool spawn = false;//オブジェクトが出現している
106
+
107
+ void Start()
108
+
109
+ {
110
+
111
+ }
112
+
113
+ void Update()
114
+
115
+ {
116
+
117
+ Vector2 Cpos = GameObject.Find("Main Camera").transform.position;//カメラの座標をゲッチュ
118
+
119
+
120
+
121
+ Transform myTransform = this.transform;
122
+
123
+ Vector2 Mpos = myTransform.position;
124
+
125
+
126
+
127
+ if(Mpos.x < (Cpos.x -10)||(Cpos.x -10) < Mpos.x||Mpos.y < (Cpos.y -10)||(Cpos.y +20) < Mpos.y)
128
+
129
+ //もしオブジェクトが離れすぎた場合
130
+
131
+ {
132
+
133
+ spawn = false;//オブジェクトは出現していない
134
+
135
+ }
136
+
137
+ if(spawn == false)//オブジェクトが出現していないとき
138
+
139
+ {
140
+
141
+ float spXa = Random.Range((Cpos.x -10), (Cpos.x -3));//出現範囲(xの-)
142
+
143
+ float spXb = Random.Range((Cpos.x +3), (Cpos.x +10));//出現範囲(xの+)
144
+
145
+ float spYa = Random.Range((Cpos.y -10), (Cpos.y -6));//出現範囲(yの-)
146
+
147
+ float spYb = Random.Range((Cpos.y +6), (Cpos.y +20));//出現範囲(yの+)
148
+
149
+ int RX = Random.Range(1, 2);//確率1/2
150
+
151
+ int RY = Random.Range(1, 2);//確率1/2
152
+
153
+ float spX = 20;//初期の場所
154
+
155
+ float spY = 20;//初期の場所
156
+
157
+
158
+
159
+ if(RX == 1)//1が出た場合
160
+
161
+ {
162
+
163
+ spX = spXa;//代入
164
+
165
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
166
+
167
+ spawn = true;//オブジェクトが出現している
168
+
169
+ }
170
+
171
+ if(RX == 2)//2が出た場合
172
+
173
+ {
174
+
175
+ spX = spXb;//代入
176
+
177
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
178
+
179
+ spawn = true;//オブジェクトが出現している
180
+
181
+ }
182
+
183
+ if(RY == 1)//1が出た場合
184
+
185
+ {
186
+
187
+ spY = spYa;//代入
188
+
189
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
190
+
191
+ spawn = true;//オブジェクトが出現している
192
+
193
+ }
194
+
195
+ if(RY == 2)//2が出た場合
196
+
197
+ {
198
+
199
+ spY = spYb;//代入
200
+
201
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
202
+
203
+ spawn = true;//オブジェクトが出現している
204
+
205
+ }
206
+
207
+ }
208
+
209
+ }
210
+
211
+ }
212
+
213
+ ```
214
+
215
+ ###不具合
216
+
217
+ ![![イメージ説明](9305172df3432679f298ae0b2f1926bc.gif)
218
+
219
+ 上のコードを実行してみると、エラーはなくなったのですが、画像のように白のキューブの挙動が変になりました。(黒のキューブとカメラが跳ねているのは問題ないです。)
220
+
221
+ しかし、黒のキューブの動きに合わせて変に動いてはいるので。反応はしていると思います。
222
+
223
+ この挙動を改善できる方法がわかる方は教えてください。

1

開発環境を追加しました。

2021/05/24 12:54

投稿

omaetoomae
omaetoomae

スコア41

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,12 @@
66
66
 
67
67
  ### 補足情報
68
68
 
69
+ 環境:
70
+
71
+  windows10
72
+
73
+  Unity 2020.3.9f1
74
+
69
75
 
70
76
 
71
77
  初投稿ですので、何か足りない部分があれば教えてください。