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

妹でもわかるUnrealEngine4

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

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

自作マウスカーソルをウィジェットとして表示する・第2弾 #UE4

imoue.hatenablog.com
imoue.hatenablog.com

「自作のイラストを使ったマウスカーソルを作る、というのは前にもやったんだけど」

妹「やった気がする」

「今日やるのもだいたい同じ、ウィジェットを使う方法なんだけど、もうちょっと良い方法を見つけた」

f:id:una_unagi:20170519222837p:plain

「前回はマウスカーソル入りのウィジェットがあって、その中のカーソル画像ウィジェットを動かすという考え方だった。今回はマウスカーソルを完全に独立したウィジェットとして作ってる」

f:id:una_unagi:20170519224440p:plain

「別々にウィジェットを生成して、別々にAddToViewportする。これでボタンのウィジェットと、カーソルのウィジェットが別々に追加される。そのままだとクリックした時にカーソル自体が反応するから、可視性の設定で反応しないようにしておく」

妹「でも、それだとどっちが上かわからなくなるのでは? カーソルが下になったらあれだし」

「あれしないように、AddToViewportにはZOrderというパラメータがある。普段は三角ボタンで折りたたんであるけど、ここに数字を入れると、重ね合わせ順を操作出来ることがわかった」

f:id:una_unagi:20170519225735p:plain

「マウスの移動操作は、GameModeの中のブループリントに書いてある。Tickの中でカーソル位置を調べて、ウィジェットを動かしてる。この方法の利点は他のレベルでも同じようにカーソルが出せるというところ。使うウィジェット全部にカーソルを入れて回る必要がないし、別のゲームでの使い回しもやりやすい」

妹「操作がGameModeの中ということは、マウス操作の設定としてはSetInputModeGameAndUIにしてるの?」

「今回はSetInputModeUIOnlyにしてる」

妹「??? それってウィジェットにしか反応しないという噂だったのでは?」

f:id:una_unagi:20170519230949p:plain

「SetInputModeUIOnlyにあってる時は、こういう感じのインプットアクションや、インプットAxis系イベントは無効になる。ただ、今回使ったのはTickイベントで、それは普通に動く。そしてマウス位置の取得も出来る。ウィジェットの移動にも当然問題ないから、UIOnlyでも自作カーソルは動かせることになる」

妹「うーん、でもそれってなんか、マウスカーソルだったらいいけど、動いちゃいけないやつも動かせてしまいそうな」

「そのへんは作り方次第だから。そういう特別な意図が無い場合は、Tickの中でマウスやキーボードの処理をしない方がいいと思うけど、必要な時は抜け道として使える」

※体調不良のため翌日分の記事はお休みします