コライダーのコールバックが呼ばれる条件まとめ
目的
いつもはまる呼ばれたり呼ばれなかったりするコライダーのコールバックが呼ばれる条件を、いい加減整理して覚える
OnTriggerEnter
呼ばれる条件
自分自身のコライダーのIsTriggerがTrueだった場合に呼ばれる(子のコライダーに衝突しても呼ばれない)
相手のIsTrigger状態はどちらでも呼ばれる
- 自身、または相手にrigidbodyコンポーネントがついていて、IsSimulateになっている(相手の子のコライダーにあたっても呼ばれる)
- rigidbodyコンポーネントがついている側は、(rigidbodyのついていない)子のコライダーが当たったとしても、OnTriggerEnterが呼ばれるのは、rigidbodyコンポーネントがついている親オブジェクトのみ。 子のMonobehaviorのOnTriggerEnterは呼ばれない。
private void OnTriggerEnter(Collider collider)
{
Debug.Log("bbb");
if (collider.gameObject.tag == TagNames.Player)
{
isgotten = true;
}
}
衝突座標の取得
できない。自身で中間地点求めるとかしないといけない
OnCollisionEnter(Collision collision)
呼ばれる条件
衝突する場合、つまり以下の場合に呼ばれる
- 自分自身or子のコライダーのIsTriggerがFalse
- 相手のコライダーのIsTriggerがFalse
- 自分自身の同オブジェクトにrigidbodyコンポーネントがついていて、IsSimulateになっている