イガグリを、画面をタップしたら飛んでいくようなスクリプトを作りたいです。GameObjectとしてインスタンス化したigaguriにridigBodyをつけ、AddForceメソッドを使って飛ばしたいなと思っています。以下のigaguriControllerとigaguriGeneratorをどのように書き換えればうまく行くのでしょうか??
(練習本の模範解答では、igaguriControllerの中でShootメソッドを定義し、igaguriGeneratorの中で呼び出すやり方でやっています。)
igaguriController
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class igaguriController : MonoBehaviour 6{ 7 8 Rigidbody rigid; 9 bool isStopFlg = false;//いがぐり停止判定用のフラグを追加 10 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 //this.rigid = GetComponent<Rigidbody>();//translateメソッドの非簡略版 16 //this.rigid.AddForce(0, 10, 10, ForceMode.Impulse); 17 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 //フラグがTrueの場合、回転処理をさせない 24 if(isStopFlg) 25 { 26 return; 27 } 28 transform.Rotate(new Vector3(5, 0, 0));//いがぐりを回転させる 29 } 30 31 void OnCollisionEnter(Collision other){ 32 isStopFlg = true;//フラグをTrueにする!! 33 GetComponent<Rigidbody>().isKinematic = true;//衝突した瞬間に働く力を無効にする 34 GetComponent<ParticleSystem>().Play(); 35 36 } 37 38}
igaguriGenerator
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5//タップしたらigaguriを作成したい!update内でいいんだ、、、 6public class igaguriGenerator : MonoBehaviour 7{ 8 9 public GameObject igaguriPrefab; 10 Rigidbody igaguri; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 16 } 17 18 // Update is called once per frame 19 void Update() 20 { 21 if(Input.GetMouseButtonDown(0)){ 22 GameObject igaguri = Instantiate(igaguriPrefab) as GameObject;//インスタンスを作る 23 //Shootメソッド使わなかったからなあ、飛ばす方向を指定すればいい!!いや、普通にこっちで飛ばせばいいのでは? 24 25 this.igaguri = GetComponent<Rigidbody>();//translateメソッドの非簡略版 26 this.igaguri.AddForce(0, 10, 10, ForceMode.Impulse);//igaguriにgameObject性もrigidbody製も持ち合わせたい 27 //igaguri.GetComponent<igaguriController>().Shoot(new Vector3(0, 200, 2000));//igaguriControllerのShootメソッドを呼び出す 28 29 30 } 31 } 32}
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/29 10:19
2021/03/29 11:56
2021/03/30 02:31