
【TIPS】スワイプ操作イベントをつくる
あまり実装する機会もなく忘れやすい処理ですので書き残します。
タッチ操作でのスワイプは少し処理を追加するだけで作成できます。
準備
エディタで確認するためプロジェクト設定を開きます。
インプットの「タップにマウスを仕様」をONにします。
実装
今回はPlayer Controllerに実装します。
マウスカーソルの表示
わかりやすくするため、マウスカーソルを表示するように設定しておきます。ツールバーの「クラスのデフォルト」から
マウスインターフェースの「Show Mouse Cursor」をTrueにします。
インプットTouchイベントを作成
「インプットTouch」イベントを作成します。
押した時と離した時の座標を保存
まずは押した時(Pressed)で押した位置を取得して保存します。
「Get Input Touch State」で位置を取得します。
つぎに離したときの位置も同様に保存します。
指の移動距離の差分で分岐する。
つづけて、その距離の差分を計算して、指定値以上の長さ指が動いていたかどうかを判断します。画像では距離に100を指定しました。
指定値以上(True)ならそのまま処理を続けます。
XYどちらに多く動いていたかで移動方向を判別する
X方向に多く動いていたら左右どちらかのスワイプ
Y方向に多く動いていたら上下どちらかのスワイプとわかります。
それぞれで分岐を作成します。
Xの差分が正の数なら左方向にスワイプ、負の数なら右方向にスワイプ、
Yの差分が正の数なら上方向にスワイプ、負の数なら下方向にスワイプ
となります。
グラフ全体像
以上です。指を離さない状態でもスワイプを感知したい場合はTick上で差分チェックを行って、条件を満たしたら一度だけ実行(指を離したらリセット)というように実装するのかな? と思います。
では!