Есть много способов сделать это. То, как я бы это сделал, это копаться в объекте Collision2D. Из него вы можете получить массив ContactPoint2D, используя other.contacts
, который может сказать вам направление поверхности, с которой вы столкнулись.
Что-то вроде:
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag == "Ground" && other.contacts[0].normal == Vector2.up)
{
IsGrounded = true;
}
}
other.contacts[0].normal == Vector2.up
проверяет "нормальное" направление первого контакта и сравнивает его с вектором "вверх" мира.