Ваша проблема заключается в вашем методе IsGounded.
вместо того, чтобы навести луч из нижней части объекта, который он получает из центра.
Я бы порекомендовал создать Vector3, который определяетнижнюю часть объекта и приведение луча оттуда вместо transform.position.
должно работать, если вы используете следующую переменную:
Vector3 playerBottom = new Vector3 (transform.x, transform. y - (transform.localScale.y / 2), transform.z);
метод IsGounded должен инициализировать Raycast по переменной playerBottom вместо transform.position
, вы также должны убедиться, чточто Луч не взаимодействует с самой моделью игрока. просто дайте Игроку Layer Mask и сделайте raycast игнорирующим, сказал Layer Mask.
Для получения дополнительной информации об этом: https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
Надеюсь, это поможет!