見出し画像

【TIPS】スワイプ操作イベントをつくる

あまり実装する機会もなく忘れやすい処理ですので書き残します。

タッチ操作でのスワイプは少し処理を追加するだけで作成できます。

準備

エディタで確認するためプロジェクト設定を開きます。

画像1

インプットの「タップにマウスを仕様」をONにします。

画像2

実装

今回はPlayer Controllerに実装します。

画像3

マウスカーソルの表示

わかりやすくするため、マウスカーソルを表示するように設定しておきます。ツールバーの「クラスのデフォルト」から

画像11

マウスインターフェースの「Show Mouse Cursor」をTrueにします。

画像12

インプットTouchイベントを作成

「インプットTouch」イベントを作成します。

画像4

押した時と離した時の座標を保存

まずは押した時(Pressed)で押した位置を取得して保存します。
「Get Input Touch State」で位置を取得します。

画像5

つぎに離したときの位置も同様に保存します。

画像6

指の移動距離の差分で分岐する。

つづけて、その距離の差分を計算して、指定値以上の長さ指が動いていたかどうかを判断します。画像では距離に100を指定しました。
指定値以上(True)ならそのまま処理を続けます。

画像8

XYどちらに多く動いていたかで移動方向を判別する

X方向に多く動いていたら左右どちらかのスワイプ
Y方向に多く動いていたら上下どちらかのスワイプとわかります。

画像9

それぞれで分岐を作成します。
Xの差分が正の数なら左方向にスワイプ、負の数なら右方向にスワイプ、
Yの差分が正の数なら上方向にスワイプ、負の数なら下方向にスワイプ
となります。

画像10

グラフ全体像

画像12


以上です。指を離さない状態でもスワイプを感知したい場合はTick上で差分チェックを行って、条件を満たしたら一度だけ実行(指を離したらリセット)というように実装するのかな? と思います。

では!

この記事が気に入ったらサポートをしてみませんか?