Unityでクリックした座標を取得する
検証環境
Unity:5.6.1f1
Inputクラス
InputクラスのStaticメソッドやフィールドを使うことで、入力系の処理を知ることができます。
座標の取得
マウスの座標はInput.mousePositionで参照できます。
Vector3 mousePosition = Input.mousePosition;
Input.mousePositionは常に更新されているので、クリックしたときだけ処理をしたい場合は条件を加える必要があります。
座標の始点
座標は左下が原点で、右方向がX軸のプラス、上方向がY軸のマイナスになります。
マウスの状態
マウスは
- 押していない状態
- 押している状態
- 離した状態
の3つの状態があります。
それに対してUnityでは、3つのマウスボタンの動作を検知できます。
- 押した瞬間(GetMouseButtonDown)
- 押している状態(GetMouseButton)
- 離した瞬間(GetMouseButtonUp)
の3つです。
クリック操作というのは、押した時ではなく離した時に決定することがほとんどだと思います。
ですので、今回はボタンを離した時のサンプルを書いておきます。
サンプルコード
// 左ボタンクリック if (Input.GetMouseButtonUp(0)) { Vector3 mousePosition = Input.mousePosition; Debug.Log("LeftClick:"+mousePosition ); } // 右ボタンクリック if (Input.GetMouseButtonUp(1)) { Vector3 mousePosition = Input.mousePosition; Debug.Log("RightClick:"+mousePosition ); } // 中ボタンクリック if (Input.GetMouseButtonUp(2)) { Vector3 mousePosition = Input.mousePosition; Debug.Log("MiddleClick:"+mousePosition ); }
このように、マウスクリックが発生していることを確認してから座標を取得します。
補足
ボタンを押した位置から動かしてボタンを離す(ドラッグ&ドロップ)のような操作は、
押した瞬間(GetMouseButtonDown)に座標を取得して保存しておき、
離した瞬間(GetMouseButtonUp)にも座標を取ることで、距離なども計算できます。
uGUIなど、画面上のボタンなどについてはクリックイベントがありますので、イベント時に取得するのが良いでしょう。