ボタンを長押ししている間、n秒おきに発射する仕組みをつくってみましょう。
今回は、スペースキーを押し続けると、1秒おきに自動でボールを発射するようにします。
関連記事:
n秒おきに発射をくり返す
Updateの中でn秒おきにずっと実行する
Updateを使わずにn秒おきにずっと実行する
配列のオブジェクトをn秒おきにすべて出現
指定の座標からn秒おきに発射
発射したボールをカーブさせる
キー長押しでゆっくり数を変化させる
1秒経てば0.5秒おきに実行する
キーを押しっぱなしで自動発射
Cubeを作成します。
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブに変換します。
Sphereの元データは削除しておきます。
BallShot.csを作成し、Cubeに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { [SerializeField] GameObject prefab; private float timeReset = 1; private float time = 0; void Start() { time = 0; } void Update() { time += Time.deltaTime; if(time > timeReset) { if(Input.GetKey(KeyCode.Space)) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * 3000); time = 0; } } } } |
プレハブのフィールドに、Sphereのプレハブデータを入れます。
ゲームプレイしましょう。
スペースキーを押しっぱなしにすると、1秒おきにボールが発射されます。
関連記事:
n秒おきに発射をくり返す
Updateの中でn秒おきにずっと実行する
Updateを使わずにn秒おきにずっと実行する
配列のオブジェクトをn秒おきにすべて出現
指定の座標からn秒おきに発射
発射したボールをカーブさせる
キー長押しでゆっくり数を変化させる
1秒経てば0.5秒おきに実行する