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

回答編集履歴

2

追記

2021/03/29 11:54

投稿

tsuki01
tsuki01

スコア1751

answer CHANGED
@@ -50,4 +50,38 @@
50
50
  赤いキューブ:毬栗をイメージ
51
51
  緑の壁:的をイメージ
52
52
  ※こちらでは、「igaguriController」クラス内のParticleSystemはコメントアウトして動作させています。
53
- ![イメージ説明](0dd801e070657dfba3002b19f0d868c1.gif)
53
+ ![イメージ説明](0dd801e070657dfba3002b19f0d868c1.gif)
54
+
55
+ ---
56
+
57
+ # 2021.03.29 追記
58
+ > 一つ質問です。igaguriのインスタンスにすでにrigidBodyが付いているなら、AddForceメソッドを使う前に、
59
+ this.igaguri = igarugi.GetComponent<Rigidbody>();//translateメソッドの非簡略版
60
+ の行はいらないのではと思いました。
61
+ なぜ必要なのか教えていただけませんか??
62
+
63
+ AddForceするには、インスタンス化したigaguriのRigidBody参照が必要になるので、上記の行でGetComponentしています。(提示されたコードでは、igaguriからRigidBodyを取得する箇所が見当たらなかった)
64
+
65
+ ですが、以下修正を行えば上記の行は不要になります。
66
+ (以下の様にすることで、インスタンス化と同時にStartメソッドが呼ばれ、毬栗が飛んで行きます。
67
+ インスタンス化と同時に呼ばれるのが都合悪い場合、模範回答の様に別途メソッドを分けると良いかと思います。)
68
+
69
+ 手順1、igaguriControllerクラス内の、Startメソッドのコメントを外す
70
+ ```C#
71
+ void Start()
72
+ {
73
+ this.rigid = GetComponent<Rigidbody>();//translateメソッドの非簡略版
74
+ this.rigid.AddForce(0, 10, 10, ForceMode.Impulse);
75
+ }
76
+ ```
77
+
78
+ 手順2、igaguriGeneratorクラス内の、Updateメソッドの中身を以下の様にする
79
+ ```C#
80
+ void Update()
81
+ {
82
+ if (Input.GetMouseButtonDown(0))
83
+ {
84
+ GameObject igaguri = Instantiate(igaguriPrefab) as GameObject;//インスタンスを作る
85
+ }
86
+ }
87
+ ```

1

編集

2021/03/29 11:54

投稿

tsuki01
tsuki01

スコア1751

answer CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
  **修正例**
11
- igaguriGeneratorクラス内の、Instantiateした後のオブジェクトからRigidBodyを取得する様に修正すれば改善しまでしょうか。
11
+ igaguriGeneratorクラス内の、Instantiateした後のオブジェクトからRigidBodyを取得する様に修正すれば、いがぐりを飛ばるようにならないでしょうか。
12
12
  ```diff
13
13
  using System.Collections;
14
14
  using System.Collections.Generic;