Убери проверку по тэгу.
transform.position замени на Rigidbody.MovePosition.
Таймер из апдейта в корутину перемести и в Jump ее запускай. Чтобы остановить прыжок, закэшируй корутину и останавливай ее, когда нужно.
40 вынеси в отдельное поле.
Это у тебя не PhysicsJump, физики здесь никакой нет, это анимированный прыжок, переименуй. IsOnGrounded - "является на приземленный". grounded достаточно. У тебя IsOnGrounded всегда противоположно IsJumping. Зачем здесь два флага?
Это лишний монобех, перемести код отсюда в Movement свой. Если движение у тебя вдоль поверхности, то нормаль, которую ты получаешь при движении, можно использовать в качестве замены флагов grounded и jumping (если нормаль не нулевая, то можно прыгать, если нулевая, то прыжок происходит). Соответственно, теперь тебе не нужны тэги, т.к. землю ты проверяешь через нормаль, флаги, по той же причине, не нужен апдейт, т.к. анимация происходит в корутине, не нужен лишний монобех, чтобы не делать из объекта кучу монобехов. Остается только паблик метод Jump и корутина.