3Dウィジェットが物陰に隠れている場合の判定
「3Dウィジェットは3D空間にあるわけで、とうぜん隠れたりしてよく見えない場合がある。これの判定はどうなってるんだろうと思って調べた」
「基本的にレイを飛ばして物体を探す仕組みと同じで、レイがウィジェットに届いたかどうかで、押せるかどうかが決まる。今回はマウスカーソルで操作しようとしてるから、カメラからマウスカーソルの奥に向かってレイを飛ばす感じだと思う」
妹「じゃあ途中に物があると押せないの?」
「コリジョンが小さいと、見えてないけど押せたりするけどね。レイの判定はコリジョンでやるから。逆に大きいと見えてるのに押せなかったり。あと一部がコリジョンに隠れてても、それ以外の場所は押せる」
妹「じゃあ半透明でもコリジョンあったら駄目なんだ」
「操作出来た方がいい場合は、途中にある物体のコリジョンプリセットとかを調整する。例えばVisibilityをオフするとか。他に悪影響があると困るから、真面目にやるなら専用のトレースチャンネルとか作った方がいいだろうけど」
「さっきのはWorldモードで、こっちはScreenモード。普通にウィジェットをAddViewportした場合は、普通のが手前に来るらしい。ZOrderとかそれっぽい変数があるんだけど、数字を変えても効果が見られなかった」
妹「他のウィジェットに隠れてるボタンはどうなるの? ウィジェットにコリジョンはないと思うけど」
「これは手前のウィジェットが優先されて、クリック可能なウィジェットが手前にあるとそれに邪魔される。SetInputModeGameOnlyにしててもそうなる」
妹「ウィジェット同士が重なったら?」
「それも手前優先。3Dウィジェット同士で重なっても、手前になんかあると、奥のやつは押せなくなる」