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

質問編集履歴

4

gif画像を追加

2021/05/26 12:41

投稿

omaetoomae
omaetoomae

スコア41

title CHANGED
File without changes
body CHANGED
@@ -164,6 +164,7 @@
164
164
  }
165
165
  }
166
166
  ```
167
+ ![イメージ説明](a9e9f233033a3538719e415db8634e50.gif)
167
168
  いろいろな部分を直しましたが、特に大きかった部分は
168
169
  ・「bool spawn」の部分を削除した
169
170
  ・//もしオブジェクトが離れすぎた場合のif文の計算にミスがあった

3

解決した方法を追加

2021/05/26 12:41

投稿

omaetoomae
omaetoomae

スコア41

title CHANGED
File without changes
body CHANGED
@@ -109,4 +109,62 @@
109
109
  ![![イメージ説明](9305172df3432679f298ae0b2f1926bc.gif)
110
110
  上のコードを実行してみると、エラーはなくなったのですが、画像のように白のキューブの挙動が変になりました。(黒のキューブとカメラが跳ねているのは問題ないです。)
111
111
  しかし、黒のキューブの動きに合わせて変に動いてはいるので。反応はしていると思います。
112
- この挙動を改善できる方法がわかる方は教えてください。
112
+ この挙動を改善できる方法がわかる方は教えてください。
113
+ ###解決した方法
114
+ ```C#
115
+ using System.Collections;
116
+ using System.Collections.Generic;
117
+ using UnityEngine;
118
+
119
+ public class Code : MonoBehaviour
120
+ {
121
+ public float spX;
122
+ public float spY;
123
+ void Start()
124
+ {
125
+ transform.position = new Vector2(spX,spY);
126
+ }
127
+ void Update()
128
+ {
129
+ Vector2 Ppos = GameObject.Find("Player").transform.position;//プレイヤーの座標をゲッチュ
130
+
131
+ Transform myTransform = this.transform;
132
+ Vector2 Mpos = myTransform.position;
133
+
134
+ if(Mpos.x < (Ppos.x -10)||(Ppos.x +10) < Mpos.x||Mpos.y < (Ppos.y -10)||(Ppos.y +14) < Mpos.y)
135
+ //もしオブジェクトが離れすぎた場合
136
+ {
137
+ float spXa = Random.Range((Ppos.x -10), (Ppos.x -3));//出現範囲(xの-)
138
+ float spXb = Random.Range((Ppos.x +3), (Ppos.x +10));//出現範囲(xの+)
139
+ float spYa = Random.Range((Ppos.y -10), (Ppos.y -3));//出現範囲(yの-)
140
+ float spYb = Random.Range((Ppos.y +7), (Ppos.y +14));//出現範囲(yの+)
141
+ int RX = Random.Range(1, 3);//確率1/2
142
+ int RY = Random.Range(1, 3);//確率1/2
143
+ if(RX == 1)//1が出た場合
144
+ {
145
+ spX = spXa;//代入
146
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
147
+ }
148
+ if(RX == 2)//2が出た場合
149
+ {
150
+ spX = spXb;//代入
151
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
152
+ }
153
+ if(RY == 1)//1が出た場合
154
+ {
155
+ spY = spYa;//代入
156
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
157
+ }
158
+ if(RY == 2)//2が出た場合
159
+ {
160
+ spY = spYb;//代入
161
+ transform.position = new Vector2(spX,spY); //画面外にランダムに出現
162
+ }
163
+ }
164
+ }
165
+ }
166
+ ```
167
+ いろいろな部分を直しましたが、特に大きかった部分は
168
+ ・「bool spawn」の部分を削除した
169
+ ・//もしオブジェクトが離れすぎた場合のif文の計算にミスがあった
170
+ でした!

2

新しい不具合が発生した

2021/05/26 12:36

投稿

omaetoomae
omaetoomae

スコア41

title CHANGED
File without changes
body CHANGED
@@ -37,4 +37,76 @@
37
37
   Unity 2020.3.9f1
38
38
 
39
39
  初投稿ですので、何か足りない部分があれば教えてください。
40
- 初めて作っている超初心者なので、できるだけ分かりやすく教えていただけると助かります。
40
+ 初めて作っている超初心者なので、できるだけ分かりやすく教えていただけると助かります。
41
+
42
+ ###その後
43
+ 回答にもあった、"選択のための乱数を生成して,その乱数の値によってどちらを用いかを判断するような処理"を参考にして、ランダムで1か2が出るものを作り、1が出た場合は+側に、2が出た場合はー側に設定する。(+とーが出る確率は2分の1)
44
+ というコードを作ってみました。
45
+ ### 変更したソースコード
46
+ ```C#
47
+ using System.Collections;
48
+ using System.Collections.Generic;
49
+ using UnityEngine;
50
+
51
+ public class Code : MonoBehaviour
52
+ {
53
+ public bool spawn = false;//オブジェクトが出現している
54
+ void Start()
55
+ {
56
+ }
57
+ void Update()
58
+ {
59
+ Vector2 Cpos = GameObject.Find("Main Camera").transform.position;//カメラの座標をゲッチュ
60
+
61
+ Transform myTransform = this.transform;
62
+ Vector2 Mpos = myTransform.position;
63
+
64
+ if(Mpos.x < (Cpos.x -10)||(Cpos.x -10) < Mpos.x||Mpos.y < (Cpos.y -10)||(Cpos.y +20) < Mpos.y)
65
+ //もしオブジェクトが離れすぎた場合
66
+ {
67
+ spawn = false;//オブジェクトは出現していない
68
+ }
69
+ if(spawn == false)//オブジェクトが出現していないとき
70
+ {
71
+ float spXa = Random.Range((Cpos.x -10), (Cpos.x -3));//出現範囲(xの-)
72
+ float spXb = Random.Range((Cpos.x +3), (Cpos.x +10));//出現範囲(xの+)
73
+ float spYa = Random.Range((Cpos.y -10), (Cpos.y -6));//出現範囲(yの-)
74
+ float spYb = Random.Range((Cpos.y +6), (Cpos.y +20));//出現範囲(yの+)
75
+ int RX = Random.Range(1, 2);//確率1/2
76
+ int RY = Random.Range(1, 2);//確率1/2
77
+ float spX = 20;//初期の場所
78
+ float spY = 20;//初期の場所
79
+
80
+ if(RX == 1)//1が出た場合
81
+ {
82
+ spX = spXa;//代入
83
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
84
+ spawn = true;//オブジェクトが出現している
85
+ }
86
+ if(RX == 2)//2が出た場合
87
+ {
88
+ spX = spXb;//代入
89
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
90
+ spawn = true;//オブジェクトが出現している
91
+ }
92
+ if(RY == 1)//1が出た場合
93
+ {
94
+ spY = spYa;//代入
95
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
96
+ spawn = true;//オブジェクトが出現している
97
+ }
98
+ if(RY == 2)//2が出た場合
99
+ {
100
+ spY = spYb;//代入
101
+ transform.position = new Vector2(spY,spX); //画面外にランダムに出現
102
+ spawn = true;//オブジェクトが出現している
103
+ }
104
+ }
105
+ }
106
+ }
107
+ ```
108
+ ###不具合
109
+ ![![イメージ説明](9305172df3432679f298ae0b2f1926bc.gif)
110
+ 上のコードを実行してみると、エラーはなくなったのですが、画像のように白のキューブの挙動が変になりました。(黒のキューブとカメラが跳ねているのは問題ないです。)
111
+ しかし、黒のキューブの動きに合わせて変に動いてはいるので。反応はしていると思います。
112
+ この挙動を改善できる方法がわかる方は教えてください。

1

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

2021/05/24 12:54

投稿

omaetoomae
omaetoomae

スコア41

title CHANGED
File without changes
body CHANGED
@@ -32,6 +32,9 @@
32
32
  ### 試したこと
33
33
  とにかく調べましたが、有力な情報は僕には見つけられませんでした...
34
34
  ### 補足情報
35
+ 環境:
36
+  windows10
37
+  Unity 2020.3.9f1
35
38
 
36
39
  初投稿ですので、何か足りない部分があれば教えてください。
37
40
  初めて作っている超初心者なので、できるだけ分かりやすく教えていただけると助かります。