UNREAL→LABØ

Unreal Engine4の情報をまとめます。

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

 

概要

タッチによるスワイプ操作を作成する方法です。

 

 

準備

 

エディタで確認するため、以下の設定を有効にします。
プロジェクト設定 > インプット > 「タップにマウスを使用」

f:id:miccak:20210524162850p:plain

 

 

ブループリントを作成

どこに実装しても良いと思いますが、ここでは Player Controllerに実装します。

「追加/インポート」>ブループリントクラス>「Player Controller」で実装します。

f:id:miccak:20210524163633p:plain

 

 

マウスカーソルの表示

マウスカーソルを表示するように設定しておきます。

カーソルが不要であれば飛ばしてください。

ツールバーの「クラスのデフォルト」を選択してください。
マウスインターフェース>「Show Mouse Cursor」をONにします。

f:id:miccak:20210524163831p:plain

あるいは「Begin Play」イベントなどで変更してください。

f:id:miccak:20210524164102p:plain

 

 

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

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

f:id:miccak:20210524164222p:plain
f:id:miccak:20210524164227p:plain



タッチした(押した)時と離した時の座標を保存

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

f:id:miccak:20210524164452p:plain

保存する変数の型は何でも良いと思います。ここではVector2d型にしました。

「Released」時も保存しておきます。

f:id:miccak:20210524164554p:plain

 

 

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

つづけて、「Released」時に処理を追加します。
その距離の差分を計算して指定値以上の長さ指が動いていたかどうかを判断します。

画像では距離に100を指定しました。
指定値以上(True)ならそのまま処理を続けます。

f:id:miccak:20210524164932p:plain

 

 

移動方向を判別する

「X方向に多く動いていたら左右どちらかのスワイプ」
「Y方向に多く動いていたら上下どちらかのスワイプ」

と判断して分岐させます。

f:id:miccak:20210524165259p:plain

比較前に値を「Absolute(ABS)」で絶対値にしています。

 

それぞれで分岐を作成します。

 

Xの差分が正の数なら左方向にスワイプ、負の数なら右方向にスワイプ。
Yの差分が正の数なら上方向にスワイプ、負の数なら下方向にスワイプ

と判断します。

f:id:miccak:20210524165737p:plain

 

全体像

f:id:miccak:20210524165810p:plain

 

以上です。

指を離さない状態でもスワイプを感知したい場合は、「Tick」イベント上で差分のチェックを行って、条件を満たしたときに一度だけ実行(指を離したらリセット)するのが簡単そうですね。

 

お疲れさまでした!