2015年12月10日木曜日

UE4: Static Mesh ComponentでClick&Touchイベントを受け付ける

表示しているActorのStatic Mesh Componentをマウスクリックしたり、タッチしたりして色々とインタラクションしたい!
こんなの簡単にできるだろうと思ってたら、やはりUE4さんは優しくなかったというか、運が悪かったというか、ようするにちょっとハマりました。

基本的なやり方などは、以下のビデオを観ると、おおよそ分かると思います。僕の場合は、これでだけではうまく行かなかったので、何故だろうと悩んだわけです。



Static Mesh ComponentにClick&Touchを実装してみよう!

  1. BlueprintのStatic Mesh Componentを選択し、DetailsパネルのEvents欄からOn Clicked、On Input Touch Beginボタンを押して、Event Graphにイベントを追加します。
    ClickTouchEvent.jpg

  2. Player Controllerクラスを継承したBlueprint Classを新規に作成します。今回はBP_MyPlayerControllerというクラスを作成しました。
  3. BP_MyPlayerControllerクラスのDetailsパネルのMouse Interface欄の設定をします。先に登録したOn Clickedイベント、On Input Touch Beginイベントを受け取るには、Enable Click Events、Enable Touch Eventsを共にチェックしておく必要があります。更に、Default Click Trace ChannelがVisibilityになっているの確認しときます。これはClick&Touchのヒットチェックをトレースするのに、Collision Responsesのどのタイプを使用するか設定するもので、基本的にはVisibilityでOKと思われます。この仕組みを分かってないと、Static Mesh Componentのコリジョン設定をいろいろ弄っていると、突然Click&Touchできなくなったりした時に焦るかもしれません。というか僕は焦りました。
    PCMouseInterface.jpg

  4. BlueprintのStatic Mesh Componentの設定に戻ります。DetailsパネルのCollision欄のCollision ResponsesのVisibilityを確認して下さい。ここはBlockにチェックを入れます。IgnoreやOverlapに設定されているとClick&Touchのトレースがスルーされてしまいます。
    StaticMeshCollision.jpg

  5. 以上でできるようになりました!

テスト環境

  • Windows 8.1
  • UE 4.10.1
  • iPod Touch5

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...