質問編集履歴

4

ご教授頂きスクリプトを書き換えたので反映しました。

2020/01/22 12:48

投稿

Kageyama_23457
Kageyama_23457

スコア21

test CHANGED
File without changes
test CHANGED
@@ -40,9 +40,11 @@
40
40
 
41
41
 
42
42
 
43
+ ※1月22日修正:ご教授頂き、エラーが出ていた箇所などを訂正したものに変えました。
44
+
43
45
  ①[こちら様](http://tsubakit1.hateblo.jp/entry/20140713/1405183951)
44
46
 
45
- 問題:VS、Unityとにエラーませんが、キャラたちは弾ず、キャラと接触すると車は止ってしまいます
47
+ 問題:キャラにぶつかってりませんが、キャラは弾き飛ばされません
46
48
 
47
49
 
48
50
 
@@ -78,8 +80,6 @@
78
80
 
79
81
  private SpriteRenderer sr = null;
80
82
 
81
- private string charaTag = "chara";//キャラタグ(プレイヤーキャラ、CPUキャラ共通)
82
-
83
83
 
84
84
 
85
85
  void Start()
@@ -90,19 +90,21 @@
90
90
 
91
91
  sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断
92
92
 
93
-
94
-
95
- float x = Random.Range(-1f,1f);//生成時、移動方向を左右ランダムに取得
96
-
97
- rb.velocity = new Vector2(x * Speed, 0);
98
-
99
- }
93
+ }
94
+
100
-
95
+ void LateUpdate()//普通のUpdateでいいのかLateあるいはFixedの方がいいのかよくわかってません。
96
+
101
-
97
+ {
98
+
102
-
99
+ //float x = Random.Range(-1f, 1f);
100
+
101
+ rb.velocity = new Vector2(Speed, 0);/*車がキャラにぶつかっても止まらないようにStart内からUpdate内に書き換えましたが、
102
+
103
+ 上のfloat xをアクティブにすると車が左右にブレ続け移動しないという挙動不審になります。*/
104
+
105
+ }
106
+
103
- void OnCollisionEnter2D(Collision2D coll)
107
+ void OnCollisionEnter2D(Collision2D coll)//@
104
-
105
-
106
108
 
107
109
  {
108
110
 
@@ -110,25 +112,17 @@
110
112
 
111
113
  /*コピペしたところ";が必要です"とメッセージが出たのでつけました。*/
112
114
 
113
-
114
-
115
115
  foreach (var col in colliders)
116
116
 
117
-
118
-
119
117
  {
120
118
 
121
- if (GetComponent<Rigidbody2D>() != null)/*元の記述では”col.collider.rigidbody2D”でしたが、
122
-
123
- ('Property rigidbody2D has been deprecated. Use GetComponent<Rigidbody2D>() instead. (UnityUpgradable)')
119
+ if (col.rigidbody != null)//★ご教授頂き、"GetComponent<Rigidbody2D>()"を"col.rigidbody"に書き換えました。
124
-
125
- と出たので書き換えました。*/
126
120
 
127
121
  {
128
122
 
129
123
  var diff = col.transform.position - transform.position;
130
124
 
131
- GetComponent<Rigidbody2D>().AddForce(diff * 0.06f, ForceMode2D.Impulse);//同上、書き換えました。
125
+ col.rigidbody.AddForce(diff * 5f, ForceMode2D.Impulse);//同上、書き換えました。
132
126
 
133
127
  }
134
128
 
@@ -136,234 +130,260 @@
136
130
 
137
131
  }
138
132
 
133
+ }//出処:テラシュール様 結果:キャラは車に押されますが、弾き飛ばされません。
134
+
135
+ ```
136
+
137
+
138
+
139
+ ②[こちら様](https://codegenius.org/open/courses/23/sections/188)
140
+
141
+ 問題:こちらは元来Rigidbody用のものをご教授頂きRigodbody2Dに書き換えました。
142
+
143
+ ですが①同様、キャラにぶつかっても車は止まりませんが、キャラは弾き飛ばされません。
144
+
145
+ ```C#
146
+
147
+ using System.Collections;
148
+
149
+ using System.Collections.Generic;
150
+
151
+ using UnityEngine;
152
+
153
+
154
+
155
+ public class kuruma04 : MonoBehaviour
156
+
157
+ {
158
+
159
+ public float Speed;//移動速度
160
+
161
+
162
+
163
+ public float radius = 10.0f;
164
+
165
+ public float power = 100.0f;
166
+
167
+
168
+
169
+ private bool nonVisibleAct;//映ってなくても動いてる
170
+
171
+ Rigidbody2D rb = null;
172
+
173
+ private SpriteRenderer sr = null;
174
+
175
+
176
+
177
+ void Start()
178
+
179
+ {
180
+
181
+ rb = GetComponent<Rigidbody2D>();//車プレハブのインスタンスを取得
182
+
183
+ sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断
184
+
185
+ }
186
+
187
+
188
+
189
+ void LateUpdate()//普通のUpdateでいいのかLateあるいはFixedの方がいいのかよくわかってません。
190
+
191
+ {
192
+
193
+ //float x = Random.Range(-1f, 1f);
194
+
195
+ rb.velocity = new Vector2(Speed, 0);/*車がキャラにぶつかっても止まらないようにStart内からUpdate内に書き換えましたが、
196
+
197
+ 上のfloat xをアクティブにすると車が左右にブレ続け移動しないという挙動不審になります。*/
198
+
199
+ }
200
+
201
+
202
+
203
+ void OnCollision2D(Collision _other)/*ここの"OnCollisionEnter2D"が、Unity側で"This message parameter has to be of type:Collision2D"と出ます。
204
+
205
+ エラーが出たままでもシーン自体は動くのですが、書き換えました。*/
206
+
207
+ {
208
+
209
+ if (_other.gameObject.tag == "chara")
210
+
211
+ {
212
+
213
+ // 力を発生させる場所
214
+
215
+ Vector2 explosionPos = gameObject.transform.position;//元はVector3ですが書き換えました。
216
+
217
+ // 中心点から設定した半径の中にあるcolliderの配列を取得する。
218
+
219
+ Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
220
+
221
+ foreach (Collider hit in colliders)
222
+
223
+ {
224
+
225
+ // 力を及ぼしたいオブジェクトにRigidbodyが付いていることが必要(ポイント)
226
+
227
+ Rigidbody2D hitrb = hit.GetComponent<Rigidbody2D>();/*元はRigidbodyですが書き換えました。
228
+
229
+ こちらでは「衝突したオブジェクトのインスタンス(rigidbody2D)を取得」命令の必要がある。
230
+
231
+ クラスで宣言している車プレハブの変数rbと競合していたのでhitrbとしました。*/
232
+
233
+
234
+
235
+ if (hitrb != null)
236
+
237
+ {
238
+
239
+ _other.rigidbody.AddExplosionForce(power, explosionPos, 5.0f);/*"rb"だと赤線が引かれ、
240
+
241
+ 「'Collision' に 'rb' の定義が含まれておらず、型 'Collision' の最初の引数を受け付けるアクセス可能な拡張メソッド 'rb' が見つかりませんでした。
242
+
243
+ using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。」と出るので、
244
+
245
+ "rigidbody"に書き換えたところエラーは消えました。rigidbody2Dだと書き換え前と同じエラーが出ます。
246
+
247
+ ただしやはり、キャラは弾き飛ばされません。*/
248
+
249
+ // 取得したRigidbodyに力を加える
250
+
251
+ // 3つの引数(加える力の強さ、力の中心点、力を及ぼす半径)
252
+
253
+ }
254
+
255
+ }
256
+
257
+ }
258
+
259
+ }
260
+
261
+ }//出処 質問ページの②のサイト様 結果:キャラは車に押されますが、弾き飛ばされません。
262
+
263
+ /*自分用メモ:「次のメソッドまたはプロパティ間で呼び出しが不適切です」→当該スクリプト内、あるいは所属するソリューション内で、
264
+
265
+ 引数などがダブっててVS側が「どっちを呼び出せばいいのかわからない」となっている。*/
266
+
267
+ ```
268
+
269
+ ③[こちら様(英語サイト)](https://stackoverflow.com/questions/34250868/unity-addexplosionforce-to-2d)
270
+
271
+ 問題:上記2つ同様、キャラにぶつかっても車は止まりませんが、キャラは弾き飛ばされません。
272
+
273
+
274
+
275
+ ```C#
276
+
277
+ using System.Collections;
278
+
279
+ using System.Collections.Generic;
280
+
281
+ using UnityEngine;
282
+
283
+
284
+
285
+ public class kuruma06 : MonoBehaviour
286
+
287
+ {
288
+
289
+ Rigidbody2D rb;
290
+
291
+ public float Speed;
292
+
293
+ private SpriteRenderer sr = null;
294
+
295
+
296
+
297
+ void Start()
298
+
299
+ {
300
+
301
+ rb = GetComponent<Rigidbody2D>();
302
+
303
+ sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断
304
+
305
+ }
306
+
307
+
308
+
309
+ void LateUpdate()//普通のUpdateでいいのかLateあるいはFixedの方がいいのかよくわかってません。
310
+
311
+ {
312
+
313
+ //float x = Random.Range(-1f, 1f);
314
+
315
+ rb.velocity = new Vector2(Speed, 0);/*車がキャラにぶつかっても止まらないようにStart内からUpdate内に書き換えましたが、
316
+
317
+ 上のfloat xをアクティブにすると車が左右にブレ続け移動しないという挙動不審になります。*/
318
+
319
+ }
320
+
321
+
322
+
323
+ public float explosionStrength = 500;
324
+
325
+ void OnCollisionEnter2D(Collision2D _other)//@
326
+
327
+ {
328
+
329
+    _other.rigidbody.AddExplosionForce(explosionStrength, this.transform.position,5);
330
+
331
+ }
332
+
333
+ //自分用メモ:「現在のコンテキストに〜という名前は存在しません」→〜の記述位置から見て遠い、あるいはそもそもスクリプト内で定義されておらず、〜を参照できない。
334
+
139
335
  }
140
336
 
141
337
 
142
338
 
339
+ public static class Rigidbody2DExt
340
+
341
+ {
342
+
343
+ public static void AddExplosionForce(this Rigidbody2D rb, float explosionForce, Vector2 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode2D mode = ForceMode2D.Force)
344
+
345
+ {
346
+
347
+ var explosionDir = rb.position - explosionPosition;
348
+
349
+ var explosionDistance = explosionDir.magnitude;
350
+
351
+
352
+
353
+ // Normalize without computing magnitude again
354
+
355
+ if (upwardsModifier == 0)
356
+
357
+ explosionDir /= explosionDistance;
358
+
359
+ else
360
+
361
+ {
362
+
363
+ // From Rigidbody.AddExplosionForce doc:
364
+
365
+ // If you pass a non-zero value for the upwardsModifier parameter, the direction
366
+
367
+ // will be modified by subtracting that value from the Y component of the centre point.
368
+
369
+ explosionDir.y += upwardsModifier;
370
+
371
+ explosionDir.Normalize();
372
+
373
+ }
374
+
375
+ rb.AddForce(Mathf.Lerp(0, explosionForce, (1 - explosionDistance)) * explosionDir, mode);
376
+
377
+ }
378
+
379
+ }
380
+
381
+ //出処:英語サイト 結果:キャラは車に押されますが、弾き飛ばされません。
382
+
143
383
  ```
144
384
 
145
385
 
146
386
 
147
- ②[こちら様](https://codegenius.org/open/courses/23/sections/188)
148
-
149
- 問題:こちらは元来Rigidbody用のものを手探りでRigodbody2Dに書き換えたのですが、
150
-
151
- 一番下の//★の行でVSにて赤線が引かれ、書き換え方がわからず動作できません。
152
-
153
-
154
-
155
- ```C#
156
-
157
- using System.Collections;
158
-
159
- using System.Collections.Generic;
160
-
161
- using UnityEngine;
162
-
163
-
164
-
165
- public class kuruma04 : MonoBehaviour
166
-
167
- {
168
-
169
- public float Speed;//移動速度
170
-
171
-
172
-
173
- public float radius = 10.0f;
174
-
175
- public float power = 100.0f;
176
-
177
-
178
-
179
- private bool nonVisibleAct;//映ってなくても動いてる
180
-
181
-
182
-
183
- Rigidbody2D rb = null;
184
-
185
- private SpriteRenderer sr = null;
186
-
187
- private string charaTag = "chara";//キャラタグ(プレイヤーキャラ、CPUキャラ共通)
188
-
189
-
190
-
191
- void Start()
192
-
193
- {
194
-
195
- rb = GetComponent<Rigidbody2D>();
196
-
197
- sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断
198
-
199
-
200
-
201
- float x = Random.Range(-1f,1f);//生成時、移動方向を左右ランダムに取得
202
-
203
- rb.velocity = new Vector2(x * Speed, 0);
204
-
205
- }
206
-
207
-
208
-
209
- void OnCollisionEnter2D(Collision other)
210
-
211
- {
212
-
213
- if (other.gameObject.tag == "chara")
214
-
215
- {
216
-
217
-
218
-
219
- // 力を発生させる場所
220
-
221
- Vector2 explosionPos = gameObject.transform.position;//元はVector3ですが書き換えました。
222
-
223
-
224
-
225
- // 中心点から設定した半径の中にあるcolliderの配列を取得する。
226
-
227
- Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
228
-
229
-
230
-
231
- foreach (Collider hit in colliders)
232
-
233
- {
234
-
235
- // 力を及ぼしたいオブジェクトにRigidbodyが付いていることが必要(ポイント)
236
-
237
- Rigidbody2D rb = hit.GetComponent<Rigidbody2D>();//元はRigidbodyですが書き換えました。
238
-
239
-
240
-
241
- if (rb != null)
242
-
243
- {
244
-
245
- // 取得したRigidbodyに力を加える
246
-
247
- // 3つの引数(加える力の強さ、力の中心点、力を及ぼす半径)
248
-
249
- rb.AddExplosionForce(power, explosionPos, 5.0f);//★ここの"AddExplosionForce"に赤線が引かれ、2Dへの書き換えがわからず動作できません。
250
-
251
- }
252
-
253
- }
254
-
255
- }
256
-
257
- }
258
-
259
- }
260
-
261
-
262
-
263
- ```
264
-
265
- ③[こちら様(英語サイト)](https://stackoverflow.com/questions/34250868/unity-addexplosionforce-to-2d)
266
-
267
- 問題1:★★で囲った"AddExplosionForce"にVSにて赤線が引かれ、
268
-
269
- 「(拡張子) void Rigidbody2D.AddExplosionForce(float explosionForce, Vector2 explosionPosition, float explosionRadius, [float upwardsModifier = 0], [ForceMode2D mode = ForceMode2D.Force]) (+ 1 オーバーロード)
270
-
271
- 次のメソッドまたはプロパティ間で呼び出しが不適切です: 'kuruma05.AddExplosionForce(Rigidbody2D, float, Vector2, float, float, ForceMode2D)' と 'Rigidbody2DExt.AddExplosionForce(Rigidbody2D, float, Vector2, float, float, ForceMode2D)'」
272
-
273
- とメッセージが出ます。
274
-
275
- 以下のスクリプトはkuruma05.csから複製して書き換えたkuruma06.csなのですが、クラス名も変えているのに、
276
-
277
- なぜメッセージ内でkuruma05が出るのかもわかりません。
278
-
279
-
280
-
281
- 問題2:★★の前の"rigidbody"を"rigidbody2D"に書き換えると、★★のエラーは消えるのですが、
282
-
283
- 今度は書き換えた"rigidbody2D"に赤線が引かれ、
284
-
285
- 「'Collision2D' に 'rigidbody2D' の定義が含まれておらず、型 'Collision2D' の最初の引数を受け付けるアクセス可能な拡張メソッド 'rigidbody2D' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。」
286
-
287
- とメッセージが出ます。
288
-
289
-
290
-
291
- ```C#
292
-
293
- using System.Collections;
294
-
295
- using System.Collections.Generic;
296
-
297
- using UnityEngine;
298
-
299
-
300
-
301
- public class kuruma06 : MonoBehaviour
302
-
303
- {
304
-
305
- public float explosionStrength = 100;
306
-
307
- void OnCollisionEnter2D(Collision2D _other)
308
-
309
- {
310
-
311
- if (_other.collider.gameObject.name == "Bouncy object")
312
-
313
- _other.rigidbody.★AddExplosionForce★(explosionStrength, this.transform.position, 5);
314
-
315
- }
316
-
317
- }
318
-
319
-
320
-
321
- public static class Rigidbody2DExt
322
-
323
- {
324
-
325
- public static void AddExplosionForce(this Rigidbody2D rb, float explosionForce, Vector2 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode2D mode = ForceMode2D.Force)
326
-
327
- {
328
-
329
- var explosionDir = rb.position - explosionPosition;
330
-
331
- var explosionDistance = explosionDir.magnitude;
332
-
333
- // Normalize without computing magnitude again
334
-
335
- if (upwardsModifier == 0)
336
-
337
- explosionDir /= explosionDistance;
338
-
339
- else
340
-
341
- {
342
-
343
- // From Rigidbody.AddExplosionForce doc:
344
-
345
- // If you pass a non-zero value for the upwardsModifier parameter, the direction
346
-
347
- // will be modified by subtracting that value from the Y component of the centre point.
348
-
349
- explosionDir.y += upwardsModifier;
350
-
351
- explosionDir.Normalize();
352
-
353
- }
354
-
355
- rb.AddForce(Mathf.Lerp(0, explosionForce, (1 - explosionDistance)) * explosionDir, mode);
356
-
357
- }
358
-
359
- }
360
-
361
-
362
-
363
- ```
364
-
365
-
366
-
367
387
  ###キャラの移動について
368
388
 
369
389
  現在、プレイヤーキャラ、CPUともにVelocityで動かしておりますが、

3

頂いたアドバイスを実行して出るエラーを質問欄に反映しました。

2020/01/22 12:48

投稿

Kageyama_23457
Kageyama_23457

スコア21

test CHANGED
File without changes
test CHANGED
@@ -264,11 +264,27 @@
264
264
 
265
265
  ③[こちら様(英語サイト)](https://stackoverflow.com/questions/34250868/unity-addexplosionforce-to-2d)
266
266
 
267
- スクリプト中ほど//の☆の行黄色線が引かれるのと車のプレハブにつけようとすると、
268
-
269
- Unity側でCan't add script behaviour kuruma05. The script class can't be abstract!」
270
-
271
- 。要するに「MonoBehabiourがなくて、Unityでは使えませんという意味であっているでしょうか?
267
+ 問題1:★★で囲った"AddExplosionForce"VSにて赤線が引かれ、
268
+
269
+ (拡張子) void Rigidbody2D.AddExplosionForce(float explosionForce, Vector2 explosionPosition, float explosionRadius, [float upwardsModifier = 0], [ForceMode2D mode = ForceMode2D.Force]) (+ 1 オーバーロード)
270
+
271
+ 次のメソッドまたはプロパティ間で呼びしが不適切で: 'kuruma05.AddExplosionForce(Rigidbody2D, float, Vector2, float, float, ForceMode2D)' と 'Rigidbody2DExt.AddExplosionForce(Rigidbody2D, float, Vector2, float, float, ForceMode2D)'
272
+
273
+ とメッセージが出ます。
274
+
275
+ 以下のスクリプトはkuruma05.csから複製して書き換えたkuruma06.csなのですが、クラス名も変えているのに、
276
+
277
+ なぜメッセージ内でkuruma05が出るのかもわかりません。
278
+
279
+
280
+
281
+ 問題2:★★の前の"rigidbody"を"rigidbody2D"に書き換えると、★★のエラーは消えるのですが、
282
+
283
+ 今度は書き換えた"rigidbody2D"に赤線が引かれ、
284
+
285
+ 「'Collision2D' に 'rigidbody2D' の定義が含まれておらず、型 'Collision2D' の最初の引数を受け付けるアクセス可能な拡張メソッド 'rigidbody2D' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。」
286
+
287
+ とメッセージが出ます。
272
288
 
273
289
 
274
290
 
@@ -282,11 +298,29 @@
282
298
 
283
299
 
284
300
 
285
- public static class kuruma05//☆":MonoBehaviour"を書いたままだとクラス名に赤線が引かれます。
301
+ public class kuruma06 : MonoBehaviour
286
302
 
287
303
  {
288
304
 
289
-
305
+ public float explosionStrength = 100;
306
+
307
+ void OnCollisionEnter2D(Collision2D _other)
308
+
309
+ {
310
+
311
+ if (_other.collider.gameObject.name == "Bouncy object")
312
+
313
+ _other.rigidbody.★AddExplosionForce★(explosionStrength, this.transform.position, 5);
314
+
315
+ }
316
+
317
+ }
318
+
319
+
320
+
321
+ public static class Rigidbody2DExt
322
+
323
+ {
290
324
 
291
325
  public static void AddExplosionForce(this Rigidbody2D rb, float explosionForce, Vector2 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode2D mode = ForceMode2D.Force)
292
326
 
@@ -296,11 +330,9 @@
296
330
 
297
331
  var explosionDistance = explosionDir.magnitude;
298
332
 
299
-
300
-
301
333
  // Normalize without computing magnitude again
302
334
 
303
- if (upwardsModifier == 0)/*☆ここに黄色線が引かれ、"Fix floating point number comparing. Compare a difference with epsilon."と出ます。*/
335
+ if (upwardsModifier == 0)
304
336
 
305
337
  explosionDir /= explosionDistance;
306
338
 
@@ -320,8 +352,6 @@
320
352
 
321
353
  }
322
354
 
323
-
324
-
325
355
  rb.AddForce(Mathf.Lerp(0, explosionForce, (1 - explosionDistance)) * explosionDir, mode);
326
356
 
327
357
  }

2

試したスクリプトが増えたので、質問欄の前提に増やしました。

2020/01/21 00:17

投稿

Kageyama_23457
Kageyama_23457

スコア21

test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- 車のプレハブにつけるスクリプトを、箇所のサイト様のコードを試しましたが、それぞれ問題が生じます。
39
+ 車のプレハブにつけるスクリプトを、箇所のサイト様のコードを試しましたが、それぞれ問題が生じます。
40
40
 
41
41
 
42
42
 
@@ -262,6 +262,76 @@
262
262
 
263
263
  ```
264
264
 
265
+ ③[こちら様(英語サイト)](https://stackoverflow.com/questions/34250868/unity-addexplosionforce-to-2d)
266
+
267
+ スクリプト中ほど//の☆の行に黄色線が引かれるのと、車のプレハブにつけようとすると、
268
+
269
+ Unity側で「Can't add script behaviour kuruma05. The script class can't be abstract!」
270
+
271
+ と出ます。要するに「MonoBehabiourがなくて、Unityでは使えません」という意味であっているでしょうか?
272
+
273
+
274
+
275
+ ```C#
276
+
277
+ using System.Collections;
278
+
279
+ using System.Collections.Generic;
280
+
281
+ using UnityEngine;
282
+
283
+
284
+
285
+ public static class kuruma05//☆":MonoBehaviour"を書いたままだとクラス名に赤線が引かれます。
286
+
287
+ {
288
+
289
+
290
+
291
+ public static void AddExplosionForce(this Rigidbody2D rb, float explosionForce, Vector2 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode2D mode = ForceMode2D.Force)
292
+
293
+ {
294
+
295
+ var explosionDir = rb.position - explosionPosition;
296
+
297
+ var explosionDistance = explosionDir.magnitude;
298
+
299
+
300
+
301
+ // Normalize without computing magnitude again
302
+
303
+ if (upwardsModifier == 0)/*☆ここに黄色線が引かれ、"Fix floating point number comparing. Compare a difference with epsilon."と出ます。*/
304
+
305
+ explosionDir /= explosionDistance;
306
+
307
+ else
308
+
309
+ {
310
+
311
+ // From Rigidbody.AddExplosionForce doc:
312
+
313
+ // If you pass a non-zero value for the upwardsModifier parameter, the direction
314
+
315
+ // will be modified by subtracting that value from the Y component of the centre point.
316
+
317
+ explosionDir.y += upwardsModifier;
318
+
319
+ explosionDir.Normalize();
320
+
321
+ }
322
+
323
+
324
+
325
+ rb.AddForce(Mathf.Lerp(0, explosionForce, (1 - explosionDistance)) * explosionDir, mode);
326
+
327
+ }
328
+
329
+ }
330
+
331
+
332
+
333
+ ```
334
+
265
335
 
266
336
 
267
337
  ###キャラの移動について

1

ここまでできていることの欄に漏れがあったので足しました。

2020/01/20 08:35

投稿

Kageyama_23457
Kageyama_23457

スコア21

test CHANGED
File without changes
test CHANGED
@@ -298,10 +298,12 @@
298
298
 
299
299
  ・カメラのプレイヤー追従(y軸のみ)
300
300
 
301
- ・障害物のランダム座標生成
302
-
303
301
  ・CPUキャラの自走(y軸下に向けて進むだけですが)
304
302
 
303
+ ・オブジェクトのランダム座標生成、及びランダムな方向への移動
304
+
305
+ ・加速アイテム実装
306
+
305
307
 
306
308
 
307
309
  ここまで同じゲームで質問させて頂き、解決に至るご教授を頂いておりますので、