Если вы измените позицию символа с помощью
moveSpeed * Time.deltaTime
, позиция не будет точно соответствовать ни одной из позиций вашего массива, потому что Time.deltaTime - это время, прошедшее с последнего кадра, и это переменное число с плавающей запятой с множеством десятичных чисел. Это приводит к тому, что позиция не будет "точно" такой же, поэтому не запускается интересующая вас часть кода. Если вы поместите ее раньше, имеет смысл, что она работает, потому что в start () уже в точной позиции ваш путь, сын условие истинно.
Для последнего условия if, которое должно быть выполнено, вам нужно будет обновить положение символа на вашем пути через точные его точки, увеличивая вместо этого индекс путевых точек [waypointIndex] of with Time.deltaTime.
Для следования пути я предлагаю плагин Itween, простой в использовании, может иметь крутой изогнутый путь следования и практически понятную реализацию.
https://assetstore.unity.com/packages/tools/animation/itween-84
Я могу предоставить пробный сценарий, если вы заинтересованы и найдете его полезным.
Надеюсь, что это поможет.