クリックした地点の座標情報を取得して、その数値を別の形で表現してみます。
ドラッグした距離と、Cubeに加える力が比例するしくみをつくってみましょう。
マウスを押下した地点と、離した地点で、それぞれX座標情報を取得。
この差の数値をパワーに変換しています。
関連記事:
パワーゲージ(レベルゲージ)をつくる
使いやすいライフゲージの作りかた
マウスを押した時間だけオブジェクトを拡大
MainCameraの回転量をドラッグで変える
X軸だけの移動量をfloat型で取得
マウスドラッグの長さを数値として扱う
Cubeオブジェクトと、長めの平面オブジェクトを準備しましょう。
Cubeにはリジッドボディを追加し、X軸が回転しないようにチェックを入れました。
ClickPower.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 31 32 33 34 35 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickPower : MonoBehaviour { private float power; public Rigidbody rb; private float startPos; private float endPos; private Vector3 pos; private Vector3 screenToWorldPointPosition; void Start() { power = 0; } void Update() { pos = Input.mousePosition; screenToWorldPointPosition = Camera.main.ScreenToWorldPoint (pos); Debug.Log(power); if (Input.GetMouseButtonDown(0)) { startPos = pos.x; } if (Input.GetMouseButtonUp(0)) { endPos = pos.x; power = endPos - startPos; rb = GetComponent<Rigidbody>(); rb.AddForce(0, 0, power*0.05f, ForceMode.Impulse); } } } |
クリック押下と離した時点で、ぞれぞれXのポジションを取得。
再計算してPowerの数値を出します。
プレイしてみましょう。
マウスドラッグした距離によって、Cubeの移動距離が変わります。
パワー数値は、Debug.Logで確認できます。
関連記事:
パワーゲージ(レベルゲージ)をつくる
使いやすいライフゲージの作りかた
マウスを押した時間だけオブジェクトを拡大
MainCameraの回転量をドラッグで変える
X軸だけの移動量をfloat型で取得