c#
1GameObject Bullet, bullet; 2float count; 3 4void Update() 5{ 6 count += Time.deltaTime; 7 if (count >= 0.5f) 8 { 9 bullet = Instantiate(Bullet, this.transform.position, Quaternion.identity) as GameObject; 10 bullet.GetComponent<Rigidbody>().AddForce(this.transform.forward * 1500); 11 Destroy(bullet, 1f); 12 count = 0; 13 } 14}
このスクリプトは主人公となるプレイヤーのオブジェクトについています。
0.5秒毎に球を発射したいのですが、一度実行するとcountの数が増えなくなります。
if()内の処理は一度だけちゃんと実行されます。
何がいけないのでしょうか...?
このスクリプトがオフになる(enabled=falseになる)状況は無いですか?
count += Time.deltaTime;の前後に「Debug.Log(count);」と入れて進み具合の確認もしてみてください。
Debug.Log(count);
の結果は、0.5まで1フレームずつ増加しています。
0.5を超えるとコンソールには何も出なくなります。
count = 0;が呼ばれないんです。
しかし、
count = 0;
の後ろにDebug.Log(count);を書くと
コンソールで0がでます。
0.5を超えると何も出なくなるというのがおかしいです。count += Time.deltaTime;は常時呼ばれ続けている筈なので、count = 0;に到達していないなら0.5以上の数値が表示される筈です。(というかcountがなんであれ、Debug.Logは出続けるはず)
そしてcount = 0;の後ろのDebug.Logが出るということは、そこには到達しています。
他のエラーは出ていないでしょうか?
エラーは何も出ていません。
「bullet = 〜」「bullet.GetComponent〜」「Destroy(bullet, 1f);」の各行をコメントアウトして(つまりcount増減だけするコードにして)Debug.Logの変化を見るとどうなりますか?
再起動させたらうまくいきました。
理由はよくわからないですけど良かったです。
sakura_hanaさんありがとうございました。
了解です、解決して何よりです。解決方法を自己回答して質問のクローズお願いします。
わかりましたmm
回答1件
あなたの回答
tips
プレビュー