【Unity】2Dのコライダー

追記:2Dなので、SpriteRendererで主に使っていたが、uGUIでも問題なく使える!

動く物体

Is Trigger にチェックが必要
Rigidbody 2Dコンポーネントをつける必要がある
 →Body Typeは物理演算を使いたいならDynamic。物理演算の影響をうけたくない場合はKinematicでよい。

動かない物体

Is Trigger にチェックは不要
Rigidbody 2Dコンポーネントも不要

衝突したときに呼ばれるメソッド

2D用のコライダーをつけている場合、OnTriggerEnterではなくOnTriggerEnter2Dなので注意!
また、引数もColliderではなく、Collider2D となっている。
OnTriggerEnterをいくら定義しててもよばれなかったよ…

   private void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("ぶつかった");
    }

    void OnTriggerStay2D(Collider2D collider)
    {
        Debug.Log("ぶつかってる");
    }

    void OnTriggerExit2D(Collider2D other)
    {
        Debug.Log("ぶつかり終わった");
    }

また、上記メソッドは、衝突し合っている物体どちらのメソッドも呼ばれる。