(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

RectTransformが重なっているか(衝突しているか)をコライダーを使わないで判定する拡張メソッド【Unity】【uGUI】【拡張メソッド】


このエントリーをはてなブックマークに追加




この記事でのバージョン
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の内部にあるかで判定しています。