追記: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("ぶつかり終わった"); }
また、上記メソッドは、衝突し合っている物体どちらのメソッドも呼ばれる。