Gravity Not Working??

Uhh… so I was making a third person controller and everything was going fine, i added sliding jumping and moving but then i changed the gravity scale using Physics.gravity = -gravityScale * Vector3.up;
pretty much since then the gravity isnt working. No matter what value i set the gravity scale to be it only applies a gravity of -0.14 which is really weird. I cant seem to find any similar cases. But what I have noticed is that once the player character comes close enough to the ground so that the ground check raycast can hit the floor, gravity returns to normal.
Here is my code

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Windows;

public class PlayerMovement : MonoBehaviour
{
    [Space(20)]
    [Header("MOVEMENT")]
    [Space(20)]

    [SerializeField] private float moveSpeed = 10f;
    [SerializeField] private float speedMultiplier = 5f;
    [SerializeField] private float airMultiplier = 0.4f;
    [SerializeField] private float drag = 10f;
    [SerializeField] private float airDrag = 10f;

    [Space(20)]
    [Header("INPUTS AND RIGIDBODIES")]
    [Space(20)]

    [SerializeField] private Rigidbody rb;
    [SerializeField] private InputActionReference movement, jump, dash;

    [Space(20)]
    [Header("JUMPING")]
    [Space(20)]

    [SerializeField] private float jumpForce;
    [SerializeField] private LayerMask whatIsGround;
    [SerializeField] private bool isGrounded;

    [Space(20)]
    [Header("DASH")]
    [Space(20)]

    [SerializeField] private float dashDura = 1f;
    [SerializeField] private float timeSinceDash = 0f;
    [SerializeField] private bool isDashing = false;
    [SerializeField] private float dashForce;
    [SerializeField] private float dashAirMultiplier;

    [Space(20)]
    [Header("OTHER")]
    [Space(20)]

    [SerializeField] private float gravityScale = 15;


    private void OnEnable()
    {
        jump.action.performed += Jump;
        dash.action.performed += Dash;
    }

    private void OnDisable()
    {
        jump.action.performed -= Jump;
        dash.action.performed -= Dash;
    }

    private void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true;
        rb.drag = drag;
    }

    private void FixedUpdate()
    {
        if (isDashing)
        {
            KeepDashing();
            timeSinceDash += Time.deltaTime;
            if(timeSinceDash >= dashDura)
            {
                isDashing = false;
                timeSinceDash = 0;
            }
        }

        DragControl();
        GroundCheck();
        Move();
    }

    private void GroundCheck()
    {
        if(Physics.Raycast(transform.position, Vector3.down, (transform.localScale.y / 2) + 0.6f, whatIsGround))
        {
            isGrounded = true;
        }
        else
        {
            isGrounded = false;
        }
    }

    private void Jump(InputAction.CallbackContext context)
    {
        if (isGrounded)
        {
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            isGrounded = false;
        }
    }

    private void DragControl()
    {
        if (isGrounded)
        {
            rb.drag = drag;
        }
        else if(!isGrounded)
        {
            rb.drag = airDrag;
        }
    }

    private void Move()
    {
        Vector2 input = movement.action.ReadValue<Vector2>();

        Vector3 moveDir = transform.forward * input.y + transform.right * input.x;

        if (isGrounded)
        {
            rb.AddForce(moveSpeed * speedMultiplier * moveDir.normalized, ForceMode.Acceleration);
        }
        else
        {
            rb.velocity = moveDir.normalized* moveSpeed;
            rb.AddForce(airMultiplier* moveSpeed * speedMultiplier * moveDir.normalized, ForceMode.Acceleration);

        }
    }

    private void Dash(InputAction.CallbackContext context)
    {
        if (!isDashing)
        {
            if (isGrounded)
                rb.AddForce(transform.forward * dashForce, ForceMode.Impulse);
            else
                rb.AddForce(transform.forward * dashForce * dashAirMultiplier, ForceMode.Impulse);
            isDashing = true;
        }
    }
    private void KeepDashing()
    {
        if (isGrounded)
            rb.AddForce(transform.forward * (dashForce / dashDura), ForceMode.Impulse);
        else
            rb.AddForce(transform.forward * (dashForce / dashDura) * dashAirMultiplier, ForceMode.Impulse);
    }
}

Your code doesn’t change gravity at all. It only declares a “gravityScale” private variable, that’s it.

However in your Move() method which is called every FixedUpdate, you do this:

rb.velocity = moveDir.normalized* moveSpeed;

so basically you replace whatever velocity the rigidbody had -including velocity due to gravity- with something that’s a linear combination of transform.forward and transform.right. When no input is pressed this will only allow gravity to affect the object for a single frame before resetting the velocity to zero, hence the slow fall speed.

Don’t override the velocity of an object, this will get rid of all forces and accelerations that would otherwise have an effect on the object. Either add to the velocity, or use AddForce (which internally adds to the velocity).