// FIXED UPDATE private void FixedUpdate() { if (rb.velocity.y < 0f) { RaycastHit2D blHit = Physics2D.Raycast(bounds.getBottomLeftWorldPoint(), -Vector2.up, raycastLength); RaycastHit2D brHit = Physics2D.Raycast(bounds.getBottomRightWorldPoint(), -Vector2.up, raycastLength); if (blHit.collider != null || brHit.collider != null) { // collision below has occurred gravity.doDisableGravity(); transform.position = new Vector2(0f, blHit.point.y + bounds.getDefaultBoundsObject().extents.y - boundsOffset.y); } } }