マウスを長押しした分だけ、プレハブのサイズが拡大するようにプログラミングしてみましょう。
ゲーム画面上で、左クリックを押すとボールを発射。
押す時間が長ければ長いほど、ボールが大きくなります。
マウスの押下時間をパワーに変換する場合、パワーゲージの記事をご参照ください。
関連記事:
パワーゲージ(レベルゲージ)をつくる
ドラッグの距離をパワー数値に変換する
マウスを押している間パワーをためる
Prefabの準備
Sphereオブジェクトを新規作成して、色をつけました。
Sphereにリジッドボディを追加します。
Sphereをプレハブ化しましょう。
プロジェクトビューにPrefabフォルダを作成。
この中に、Sphereオブジェクトをドラッグ&ドロップします。
Sphereの元データは削除しておきます。
Prefabの生成とサイズ変更
続いて、空のオブジェクトを作成します。
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 33 34 35 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; private float power; private Vector3 mousePosition; void Start() { power = 0; } void Update() { if (Input.GetMouseButton(0)) { if( power < 5) { power += 0.1f; } } if(Input.GetMouseButtonUp(0)) { GameObject ball = GameObject.Instantiate (prefab)as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; ball.transform.localScale = new Vector3(power, power, power); ball.GetComponent<Rigidbody>().AddForce(dir * 2000); power = 0; } } } |
プレハブのフィールドが出来ていますので、ここに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
左クリックでボール発射。
マウスを長押しした分だけ、最大5までボールが大きくなっていきます。
Input.GetMouseButton ・・・ マウスを押下している間、powerが0.01ずつ増加します。
Input.GetMouseButtonUp ・・・ マウスを離したタイミングで、Prefabを生成して前方へ力を加えます。
生成したプレハブの大きさ(localScale)は、powerで取得した数値にしています。
関連記事:
パワーゲージ(レベルゲージ)をつくる
ドラッグの距離をパワー数値に変換する
マウスを押している間パワーをためる