ドラッグした方向へ飛ぶように、ボール発射できる仕組みを作ってみましょう。
ドラッグすると、マウスをなぞった方へ向かって、Sphereが飛んでいきます。
関連記事:
360°全方位に向けて発射
定位置からボールを発射させるしくみ
静止中のオブジェクトをクリックで飛ばす
MainCameraの回転量をドラッグで変える
マウスをなぞった方向へ発射
空のオブジェクトを作成します。
MousePosition.csを作成し、GameObjectに追加します。
MousePosition.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 33 34 35 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MousePosition : MonoBehaviour { public static MousePosition instance; public Vector3 clickPosition; public Vector3 releasePosition; public GameObject prefab; public void Awake() { if(instance == null) { instance = this; } } void Update() { if (Input.GetMouseButtonDown(0)) { clickPosition = Input.mousePosition; clickPosition.z = 10; } if (Input.GetMouseButtonUp(0)) { releasePosition = Input.mousePosition; releasePosition.z = 10; releasePosition = Camera.main.ScreenToWorldPoint(releasePosition); Instantiate(prefab, Camera.main.ScreenToWorldPoint(clickPosition),Quaternion.identity); } } } |
Sphereを作成し、リジッドボディを追加。
UseGravityのチェックを外します。
BallMove.csを作成し、Sphereに追加します。
BallMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallMove : MonoBehaviour { private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); rb.velocity = MousePosition.instance.releasePosition.normalized * 10; } } |
Sphereをヒエラルキーにドラッグ&ドロップし、Prefab化します。
Sphereの元データは消しておきます。
プレハブのフィールドに、Sphereを入れます。
ゲームプレイしてみましょう。
マウスをドラッグすると、なぞった方向にむけてボールが飛んでいきます。
マウスボタンを押したときと離したとき、それぞれのワールド座標を取得。
押した場所にボールを生成し、離した場所に向かって飛んでいきます。
関連記事:
360°全方位に向けて発射
定位置からボールを発射させるしくみ
静止中のオブジェクトをクリックで飛ばす
MainCameraの回転量をドラッグで変える