private void OnCollisionExit2D(Collision2D collision) { if ((1 << collision.gameObject.layer & _groundMask) == 0) { return; } touchedObjects.Remove(collision.collider); if (touchedObjects.Count == 0) { OnLandingStateChanged?.Invoke(this, new LandingEventArgs(LandingState.Airborne, LandingState.OnGround)); } }
private void OnCollisionEnter2D(Collision2D collision) { if ((1 << collision.gameObject.layer & _groundMask) == 0) { return; } if (!TestContactPoints(collision.contacts)) { return; } touchedObjects.Add(collision.collider); if (touchedObjects.Count == 1) { OnLandingStateChanged?.Invoke(this, new LandingEventArgs(LandingState.OnGround, LandingState.Airborne)); } }