タッチしたい
本題
前回モバイル向けに移動させる処理を実装しました。
これでiPhoneやiPad向けに開発の準備が整いましたがTouch操作が未対応でした。
タッチする際にアイテムの獲得したいとか色々してみたいですが、今回はActorにTouchして結果を返す処理を実装します。簡単にPrintStringでサクッと検証します。
環境:Win10,UE4.26,ThirdPersonテンプレート
ThirdPersonCharacter

現在はTouchInputにはデフォルトでジャンプが実装されていることは前回確認しました。
InputTouchノードはどんな場所でもタッチされると必ず発生してしまうため、特定のアクターがタッチされるという処理には向きません。

今回は削除してしまいましょう。
BP_ItemActor

ブループリントクラス>Actorクラスから新規で「BP_ItemActor」を作成しました。
このアクターがクリックされると「Hello」が出力されるようにします。

コンポーネントを追加>Sphereを追加します。このSphereを選択し、「OnInputTouchBegin」イベントを呼び出します。
Actorにタッチされると呼ばれるイベントですが、「OnInputTouchEnd」イベントでも1本の指しか使わないなら変わらないと思います。
はいおしまいです。「BP_ItemActor」をレベルに配置して
モバイルプレビュー(PIE)で確認してみます。

「BP_ItemActor」にタッチすると「Hello」が出ましたね。(BP_ItemActor見えないけどブラックマンの前にあります。)
サクッと確認できました。
これでPrintStringの箇所を変更していけば色々出来るかと思います。
これで終わると落とし穴にはまります。
デフォルトなら問題ありませんが、
出力して実機で試してみるとタッチしてるのに動かんとなります。なりました。
BP_PlayerController

タッチを有効化するにはPlayerControllerの設定を変更しないといけません。
クラスのデフォルト>マウスインターフェースからTouchEventにチェックをいれないとタッチが反応しません。反応していない場合はこちらにチェックが入っているか確認してみましょう。
変更されていたことに気づけなかったエンジニアの図
まだ問題がありますが、Mobileについては実装できているのでそれは次回書こうと思います。
コメント