facebook twitter hatena line email

Unity/UIImage/Collider2d

提供: 初心者エンジニアの簡易メモ
2024年7月12日 (金) 11:06時点におけるAdmin (トーク | 投稿記録)による版 (重力無視)

移動: 案内検索

2d画像UIの接触判定

  1. Canvas/Imageを2つ追加
  2. 両方にBoxColliderを追加
  3. 上側のImageにだけ重力としてRigitbody2Dを追加。
  4. ImageのInspectorのBoxColliderのxとyが1になってるので、Imageサイズと同じ(デフォルト:100)にする

これで、上側のImageがおりてきて、下のImageと接触して止まるはず。

スクリプトで接触判定

using UnityEngine;

public class Collider2d : MonoBehaviour
{
    // 接触開始
    void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("enter name=" + collision.gameObject.name);
    }
    // 接触中
    void OnCollisionStay2D(Collision2D collision)
    {
        Debug.Log("stay name=" + collision.gameObject.name);
    }
    // 接触終了
    void OnCollisionExit2D(Collision2D collision)
    {
        Debug.Log("exit name=" + collision.gameObject.name);
    }
}

OnCollisionExit2Dは、接触したImageのy位置を、手動で、強制的に変更して、接触から、引き離すと発生する。

参考:https://mogi0506.com/unity-2d-collition/

2d画像UIの侵食判定

using UnityEngine;

public class ColliderTrigger2d : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D collider)
    {
        Debug.Log("enter name=" + collider.gameObject.name);
    }
    void OnTriggerStay2D(Collider2D collider)
    {
        Debug.Log("stay name=" + collider.gameObject.name);
    }
    void OnTriggerExit2D(Collider2D collider)
    {
        Debug.Log("exit name=" + collider.gameObject.name);
    }
}

重力無視

追加したCollider2dのBodyTypeをKinematicに

回転しないように

ConstraintのFreezeRotationZにチェックを入れる

3Dのとき

Unity/3d/collider [ショートカット]

UniRxで2Dのとき

Unity/UniRx/接触判定/接触2D [ショートカット]

Unity/UniRx/接触判定/侵食2D [ショートカット]