妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

3Dウィジェットで作ったボタンを押す

f:id:una_unagi:20171012230649p:plain

「3Dウィジェットの表示はいいとして、これって押したり出来るのか? というあたりを今日は調査」

妹「押せるの?」

「押せる」

f:id:una_unagi:20171012230833p:plain

「まず最初に思いついたのが、Widgetコンポーネントの中に入ってるウィジェットをGETしてきて、普通にSetInpoutModeで設定すれば動くのでは? という考え。これで別にエラーは出ないんだけど、反応もしなかったから駄目だった。仮に動いたとしても、操作対象が1つしかないのは困る」

ikagamedev.hatenablog.com

「それでこの記事とかを見ながら色々試したんだけど、どうもWidgetInteractionというコンポーネントを使うらしい。Widgetの方はそのままで、それとは別に追加する」

f:id:una_unagi:20171012231106p:plain

「今回はマウスでクリックできるようにしたかったから、普通にマウスをクリックすると、WidgetInteraction的にもマウスをクリックしたっぽい動作をさせるようにした。当然マウスカーソルは表示させる。InteractionDistanceでどの距離のウィジェットまで反応するのか設定」

f:id:una_unagi:20171012231303p:plain

「ちゃんとクリックできた。カーソルが上にある時にボタンの絵が変わる、ホバーの動きもする」

f:id:una_unagi:20171012231649p:plain

「MouseじゃなくてCenterScreenにした場合は、画面中央にマウスカーソルがあるイメージで操作出来る。マウスカーソル非表示+マウスがカメラ回転に割り当てられてるゲームでよくみかける方法」

妹「そのWidgetInteractionというコンポーネントはどこにくっつけるの?」

「多分どこでもいいんだと思う。レベル上に存在さえしていえれば。さっきみたいにマウスとか画面中央にする場合の話だけど。他の入力関係のブループリントがあるクラスにくっつけておけばわかりやすい」

docs.unrealengine.com

「この公式の例みたいに、武器の向いている先のウィジェットを操作とかだと、その武器にくっつけて、座標や回転をあわせる必要がありそう。VRでコントローラーを使って指し示すみたいな場合もこれ」