妹でもわかるUnrealEngine4

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

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

3Dウィジェットが物陰に隠れている場合の判定

f:id:una_unagi:20171015223118p:plain

「3Dウィジェットは3D空間にあるわけで、とうぜん隠れたりしてよく見えない場合がある。これの判定はどうなってるんだろうと思って調べた」

f:id:una_unagi:20171015223128p:plain

「基本的にレイを飛ばして物体を探す仕組みと同じで、レイがウィジェットに届いたかどうかで、押せるかどうかが決まる。今回はマウスカーソルで操作しようとしてるから、カメラからマウスカーソルの奥に向かってレイを飛ばす感じだと思う」

妹「じゃあ途中に物があると押せないの?」

コリジョンが小さいと、見えてないけど押せたりするけどね。レイの判定はコリジョンでやるから。逆に大きいと見えてるのに押せなかったり。あと一部がコリジョンに隠れてても、それ以外の場所は押せる」

妹「じゃあ半透明でもコリジョンあったら駄目なんだ」

「操作出来た方がいい場合は、途中にある物体のコリジョンプリセットとかを調整する。例えばVisibilityをオフするとか。他に悪影響があると困るから、真面目にやるなら専用のトレースチャンネルとか作った方がいいだろうけど」

f:id:una_unagi:20171015223147p:plain

「さっきのはWorldモードで、こっちはScreenモード。普通にウィジェットをAddViewportした場合は、普通のが手前に来るらしい。ZOrderとかそれっぽい変数があるんだけど、数字を変えても効果が見られなかった」

妹「他のウィジェットに隠れてるボタンはどうなるの? ウィジェットコリジョンはないと思うけど」

「これは手前のウィジェットが優先されて、クリック可能なウィジェットが手前にあるとそれに邪魔される。SetInputModeGameOnlyにしててもそうなる

f:id:una_unagi:20171015225326p:plain

妹「ウィジェット同士が重なったら?」

「それも手前優先。3Dウィジェット同士で重なっても、手前になんかあると、奥のやつは押せなくなる」