Ниже сказанное, не относится конкретно к unity, но для всех любых других способах реализации этой задачи.
У тебя немного не верный подход, если речь идет о создании игры.
Дело в том, что если везде по коду вычитать и прибавлять к скорости значение, можно нагородить кучу ошибок в коде, когда таких мест станет много, а так же будет затруднено добавление более сложного поведения.
Логичнее и красивее для реализации, в классе, описывающем персонажа (а наверное лучше базового объекта живых существ в игре, ведь теми же свойствами могут обладать и монстры) определить состояние - ходьба, бег (а в будущем можно будет добавить к примеру - красться) и отдельно переменная - скорость в процентах либо boolean переменная - движение. Для каждого состояния класс должен описывать (виртуальные методы. возвращающие значение) скорость, с которой персонаж может двигаться соответственно ему текущему состоянию. И главное, текущая скорость это не переменная, а метод, который будет проверять состояние и возвращать вычисленную скорость.
Да, это очень не эффективно, каждый раз, при запросе скорости, ее заново вычислять, но если все изменения состояний и переменных, участвующих в вычислении этой скорости, менять так же методами (или геттером/сеттером), то в этих методах можно вызывать метод вычисления скорости а основной метод пусть возвращает сохраненное значение (читай кешировать вычисление скорости и отслеживать ее изменение)