Для фактического выполнения линейной интерполяции используйте Mathf.MoveTowards()
.
Для определения максимальной дельты (т. Е. Величины, на которую вы хотите, чтобы она перемещалась на каждом шаге), возьмите разницу,и затем разделите его на количество желаемых шагов.
var start = 4;
var end = 22;
var distance = end - start;
var steps = 9; // Your example technically has 9 steps, not 8
var delta = distance / steps;
Обратите внимание, что для этого удобно, что ваш distance
является чистым кратным steps
.Если вы не знаете, что это так, и важно, чтобы вы никогда не превышали это количество шагов, вы можете явно проверить это.Вот грубый пример для целого числа.Методы с плавающей точкой могут быть более сложными:
if (distance % delta > 0) { delta += 1; }