読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

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

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

ウィジェットはキーボードで操作出来るのか?

ウィジェット 入力

妹「ウィジェットってキーボードで操作出来ないのかな? ゲーム中はキーボードかゲームパッドを使うわけで、そうするとメニューとかもキーボードで操作出来ないと困ると思うんだけど」

「うーん、ざっと見た感じ出来そうだよ。UE4.6から出来るようになったとか書いてあるし」

妹「どうやるの?」

「それはしらんけど」

妹「……という話を先日していたわけですが、一応キーボード操作はできるようになったよ」

「できたんだ」

f:id:una_unagi:20150906212718g:plain

妹「できるようになったというか、元々できてたというか。適当なボタンをクリックして、そのあとカーソルキーを押すと、なんかシマシマの枠が出てきたんだよ。で、Enterキーを押すとクリックと同じになった」

「なるほどそういう仕組みだったのか」

妹「でもこれだとちょっと困るんだよ。ボタンを押してからっていっても、ボタン押した時点で用事が終わっちゃうわけだし。あとカーソルキーだけじゃなくてWASDで操作出来るようにもしたい」

「これ多分Windowsのフォーカスと同じ仕組みなんだよね。上下だけじゃなくて左右に移動出来たりするところは違うんだけど。簡単にいうとマウスが無い時にキーボードだけでも操作出来る仕組みで、標準操作だから個別に変えることが想定されてない」

妹「じゃあプレイヤーの入力設定のとこを色々設定しても駄目?」

「だめ」

妹「じゃあWASDとかは使えないのか」

「使えないってことはないんだけど、キー入力のイベントを使って自力で色々やらないといけない」

妹「キー入力イベントを使うのは考えたけどさ、ウィジェットのブループリントにはキーボード入力のイベントが作れないんだよ」

「そこにキー入力イベントを作らずに、カスタムイベントを作ればいいんだよ。そしてレベルブループリントのキー入力イベントから呼び出す。ウィジェット以外でもだいたいこのパターンでいけるはず」

妹「そうやればキーボード操作出来るのか」

「フォーカスも無効にして、自分で管理した方がいいかも。全体マップの移動画面と同じような仕組みで出来る。カーソル位置と、押した時にどうするかだけ決まってればいい」

妹「いっそのことウィジェット使わない方が楽だったりする?」

「それも手だと思うけど、楽はどうかは試してみないとわからない。あとUE4標準のウィジェット以外にもこの手のボタンを作る方法はあるみたいだから、それもチェックした方がいいかも」