前提・実現したいこと
Unityでゲームを作ろうとしています。
マスク画像を用意して、透過していない部分の座標だけ有効とする機能を作りたいです。
イメージ
bool IsValidPosition( Image maskImg, Vector2 position ){ if( positionは、maskImgの非透過部分であるか ){ return true; } return false; }
試したこと
こちらのページでは、四角いマスク画像に対して当たり判定を付けています。
[UI] ドラッグアンドドロップでUIのイメージを動かす
http://negi-lab.blog.jp/DragAndDrop
これを発展させた形で、マスク画像を水玉模様の画像とか星型の画像にして当たり判定を付けたいです。
しかし、Raycastを使用した場合、マスクで透過させている部分もRaycastの当たり判定はマスクされないようでした。
マスク画像を透過させたい部分のアルファ値を0にしたり、Maskオブジェクトの下にImageオブジェクトを用意したりした場合
表示される絵はマスクされていますが、Raycastの当たり判定はマスクされないようです。
bool IsValidPosition( Vector2 position ){ PointerEventData testPointerEventData = new PointerEventData(EventSystem.current); testPointerEventData.position = position ; var raycastResults = new List<RaycastResult>(); EventSystem.current.RaycastAll ( testPointerEventData, raycastResults ); if((raycastResults.Count > 0)){ return true; // 透過部分の座標も、raycastResults.Count = 1になる. } return false; }
Raycast以外の方法でもよいのですが、四角い画像以外の画像でも、非透過部分を取得する良い方法は無いでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。