private WheelRaycastResult HandleWheel(GameObject wheel, bool isFront)
    {
        if (!Physics.Raycast(wheel.transform.position, -transform.up, out var hit, SuspensionLength, _layerMask))
        {
            return(null);
        }

        var amount = Round(1f - hit.distance / SuspensionLength, 2);
        var result = new WheelRaycastResult {
            CompressionRatio = amount,
            ImpactPoint      = hit.point
        };

        var pushBack = transform.up * SuspensionForce * amount;

        _rb.AddForceAtPosition(pushBack, wheel.transform.position);

        return(result);
    }
    private void DebugGizmosWheelRaycastResult(GameObject wheel, WheelRaycastResult result)
    {
        var style = new GUIStyle {
            normal = { textColor = Color.white }, fontSize = 30
        };

        var wheelPos = wheel.transform.position;

        if (result != null)
        {
            Gizmos.color = Color.blue;
            Gizmos.DrawLine(wheelPos, result.ImpactPoint);
            Gizmos.DrawSphere(result.ImpactPoint, 0.1f);

            Handles.Label(wheelPos, result.CompressionRatio.ToString(), style);
        }
        else
        {
            Gizmos.color = Color.red;
            Gizmos.DrawLine(wheelPos, wheelPos - transform.up * SuspensionLength);

            Handles.Label(wheelPos, "No hit", style);
        }
    }