OkakenProject

ちょっとした スキマ時間のお手伝い

【Unity】Colliderでオブジェクトの下側だけ着地判定したい

やりたいこと

着地判定でColliderの下側が地面についた時に着地判定したい

 

結論

ContactFilter2Dを使う

クラス内で次の宣言をする

 [SerializeField] private ContactFilter2D filter2D = default;

 

宣言したら、
private void OnCollisionEnter2D(Collision2D collision){}
等のメソッド内の設置判定にIsTouching(filter2D)をANDする

if (collision.gameObject.CompareTag("GROUND") && rigid2D.IsTouching(filter2D))

 

このスクリプトをアタッチしたオブジェクトのInspectorで以下のように設定
角度は右側を0度として時計回りっぽいので、80〜100あたりを指定すればオブジェクトの下側だけ反応させることができた