画面タッチした位置にオブジェクトを移動させる
今回は、画面タッチした位置にオブジェクトを移動させる方法を備忘録にします。
※作業環境:UEバージョン5.3.2
備忘録
モバイルゲームを制作していたときに使いました。
ブループリントの全体像は、こんな感じ

それでは細かく見ていきます。
「Touchイベント」ノードを配置します。

Touch1が1本目のタッチしている指に反応します。
Touch2は2本目にタッチしている指に反応します。
なのでTouch2のイベントを発生させるには指2本が画面にタッチしている状態でないといけません。
今回はプレイヤーを移動操作させながら、タッチすることを想定しているので、Touch1とTouch2を配置しています。
Touch Finger Indexの変数を作成して、割り当てます。

この変数は、あとでゲットして使用します。
タッチした指の数に応じて処理を選択できるようにする感じです。
次にタッチした場所を取得する処理を組んでいきます。
「Get Hit Result Under Finger by Channel」ノードを配置します。

Inputピンの「Target」に「Get Player Controller」を繋げます。
Inputピンの「Finger Index」に、先ほど作成したTouch Finger Indexの変数を繋げます。
何本目のタッチした指かを確認して、情報を取得する感じです。
「Break Hit Result」ノードに繋げて位置情報(ロケーション)だけ取り出します。
「Get Hit Result Under Finger by Channel」で、取得した情報の中から必要な情報だけ抜き出しています。
これにより、タップした位置を取得できました。
「Set World Location」ノードに、移動させたいオブジェクトと位置情報を繋げます。

アクタを移動させたいなら、「Set Actor Location」ノードを使うと良いです。
「Set World Location」ノードの後ろに「Branch」ノードを繋げています。
これはタッチが機能するタイミングを指定しています。
どのタイミングでもタッチ機能させたいなら「Branch」ノードは不要です。
タップが機能するか実機で確認して完了です。
実機を使用せずに、開発パソコン上でマウスを使用してテストする方法もあります。
それを紹介した記事が以下になります。
他の記事を探す
他の記事も気になる方は、以下の記事の目次を確認ください。