マウスを押しっぱなしにしていれば、数秒おきに発射できるように、スクリプトをつくってみましょう。
左ボタンを長押ししていると、マウスカーソルの方向にむけて、1秒おきにボールを発射します。
連射の間隔も、タイマーの変数によって調整可能です。
関連記事:
n秒おきに発射をくり返す
キーを長押しでn秒おきに発射
360°全方位に向けて発射
指定の座標からn秒おきに発射
キー長押しでゆっくり数を変化させる
マウスを押している間は連射可能
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
GameObject(空のオブジェクト)を作成します。
BallShot.csを作成し、GameObjectに追加します。
BallShot.csを記述します。
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 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { [SerializeField] GameObject prefab; private float timeReset; private float time; void Start() { time = 0; timeReset = 1.0f; } void Update() { time += Time.deltaTime; if(time > timeReset) { if(Input.GetMouseButton(0)) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; ball.GetComponent<Rigidbody>().AddForce(dir * 3000); time = 0; } } } } |
プレハブのフィールドに、Sphereを入れます。
ゲームプレイして、クリックで発射しましょう。
マウスを長押ししていると、ミサイルを1秒おきに連射します。
関連記事:
n秒おきに発射をくり返す
キーを長押しでn秒おきに発射
360°全方位に向けて発射
指定の座標からn秒おきに発射
キー長押しでゆっくり数を変化させる