/// <summary>
        /// Performs a collision detection in the horizontal grounded direction.
        /// </summary>
        public CollisionHitInfo HorizontalGroundedCollision(Vector3 castDirection, bool positiveDirection, float movementAmount, LayerMask layerMask)
        {
            CollisionHitInfo hitInfo = new CollisionHitInfo();

            hitInfo.Reset();

            if (movementAmount < 0)
            {
                return(hitInfo);
            }

            float castDistance = characterBody.SkinWidth + movementAmount;


            hitInfo = PhysicsUtilities.RaycastSweep(
                characterBody.Is3D(),
                positiveDirection ? characterBody.bottomRightCollision_StepOffset : characterBody.bottomLeftCollision_StepOffset,
                positiveDirection ? characterBody.topRightCollision : characterBody.topLeftCollision,
                characterBody.HorizontalRays,
                castDirection,
                castDistance,
                RaySelectionRule.ShortestNonZero,
                layerMask
                );

            return(hitInfo);
        }