この記事でのバージョン
Unity 2022.2.8f1
はじめに
今回はタイトル通り、
RectTransformが重なっているかをコライダーを使わないで判定する方法の紹介です!
RectTransformが重なっているかをコライダーを使わないで判定する方法
さっそくですがRectTransformが重なっているかをコライダーを使わないで判定する
拡張メソッドは以下のとおりです。
上記のスクリプトを作ると、RectTransformにIsOverlappingというメソッドが追加されるので
それに別のRectTransformを渡すだけで重なっているか判定出来ます。
//重なっているか判定したいRectTransform(Inspectorから設定) [SerializeField] private RectTransform _rectTransform, _targetRectTransform; private void Update() { //重なっているか判定 if (_rectTransform.IsOverlapping(_targetRectTransform)) { Debug.Log($"重なっている"); } else { Debug.Log($"重なっていない"); } }
なお、仕組みとしては単純でRectTransformのGetWorldCornersを使って四つ角の座標を取得し、
その角がもう一方のRectTransformの内部にあるかで判定しています。