はじめに
InputSystemはエディタ上で作る入力検知システムのイメージが強めですが、
従来のInputMangerと同じようにプログラムで入力検知することもできます。
プログラムは少し癖があるので、その辺含めて解説しようと思います。
前提
インストールがまだの方は以下の記事よりインストールしてからお進みください。
マウスのクリック判定
取得する場所はInputManager
と同じでUpdate
メソッド内で行います。
using System; using UnityEngine; using UnityEngine.InputSystem; // ここ重要 public class Sample : MonoBehaviour { void Start() { } private void Update() { var mouse = Mouse.current; if (mouse != null) { // 左クリックが押された時 if (mouse.leftButton.wasPressedThisFrame) { } } } }
ボタンの種類や押下種別は他には下記のようなものがあります。
ボタンの種類
ボタン | 説明 |
---|---|
leftButton | 左ボタン |
rightButton | 右ボタン |
rightButton | 右ボタン |
middleButton | 中央ボタン |
イベントの種類
イベント | 説明 |
---|---|
isPressed | 押され続けている |
wasPressedThisFrame | 押された瞬間 |
wasReleasedThisFrame | 離された瞬間 |
マウス座標の取得
現在位置
現在のマウス座標はposition
を使います。
Vector2 position = mouse.position.ReadValue();
前フレームからの移動差分
前フレームからの差分を取りたい場合はdelta
を使います。
Vector2 delta = mouse.delta.ReadValue();
注意点
nullチェックを入れたほうがいいみたい
currentがnullになったケースがあったのでnullチェックはしとくべきかと。
以下は左クリックした瞬間を検知するプログラム例となります。
var mouse = Mouse.current; if (mouse != null) { // ここに押下判定していく }