うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】反転させた画像をクリック可能にする

通常 uGUI の 画像を Y で反転するとクリックしても反応しない

f:id:hacchi_man:20210104224745g:plain

そのための方法として、以前描画する 頂点座標を拡張コンポーネントで変更する方法を記述した

hacchi-man.hatenablog.com

がもっと簡単にできたので紹介する

それは GraphicRaycasterIgnore Reversed Graphics を false にすることでした

f:id:hacchi_man:20210104225154p:plain:w350

これにより 反転していてもクリックできることが確認できます

f:id:hacchi_man:20210104231154g:plain

コード

気になるので GraphicRaycasterコードを見てみました

すると ignoreReversedGraphics が true の場合は向きを見て前面を向いているかのチェックをしていました

false にするとこのチェックが入らなくなるので背面を向いていても問題なくクリック判定されたということでした

これを見ると、タップ時には反転したオブジェクトも取得されているので false にしていても特に問題ないのではと思いました

                if (ignoreReversedGraphics)
                {
                    if (currentEventCamera == null)
                    {
                        // If we dont have a camera we know that we should always be facing forward
                        var dir = go.transform.rotation * Vector3.forward;
                        appendGraphic = Vector3.Dot(Vector3.forward, dir) > 0;
                    }
                    else
                    {
                        // If we have a camera compare the direction against the cameras forward.
                        var cameraForward = currentEventCamera.transform.rotation * Vector3.forward * currentEventCamera.nearClipPlane;
                        appendGraphic = Vector3.Dot(go.transform.position - currentEventCamera.transform.position - cameraForward, go.transform.forward) >= 0;
                    }
                }