Qemelly(けめる)のプログラム備忘録

Unity / AtCoderについて書きます

Raycast2DでuGUIを取得する方法

positionの扱いに注意。uGUIでないオブジェクト(Sprite等)はworld座標に直す必要があるが、RectTransformの場合は必要ない。

var dropPosition = eventData.position;

if (Camera.main == null) return;

// _layerはなくてもいい
var hit = Physics2D.Raycast(dropPosition, Vector2.zero, Mathf.Infinity, _layer);
if (hit.collider == null) return;

var isHit = hit.collider.TryGetComponent(out SomeUGUIClass someUGUIClass);
if (!isHit) return;

// その後の処理