Если вы хотите изогнутую дорожку, вы можете использовать сплайны, которые являются математически определенными кривыми, заданными двумя конечными точками вектора. Вы падаете на конечные точки, а затем решаете для хорошей кривой между ними. Поиск должен выявить исходный код или математику, которые вы можете получить в исходном коде. Хорошая вещь в этом заключается в том, что вы можете точно определить курс вашего автомобиля, а также получить следующую точку на вашем пути, выполнив расчет процента. Сложность состоит в том, что вам нужно вычислить длину кривой, если вы не хотите, чтобы одинаковое количество шагов между каждым набором конечных точек.
Альтернативный подход заключается в использовании скрытого растрового изображения с путем, нарисованным на нем в виде кривой шириной в один пиксель. Вы можете найти следующее местоположение на пути, сопоставив пиксели, окружающие ваше текущее местоположение, с вектором направления движения, а затем обновите вектор дельта-функцией на каждом шаге. Мы использовали этот подход для прототипа путешествия по пути, когда «транспортное средство» «двигалось» по различным путям с помощью джойстика, и это работает нормально, пока у вас не возникнут некоторые пересечения, которые запутывают ваши векторные вычисления. Но если это однонаправленный замкнутый цикл, это будет прекрасно работать, и его очень просто реализовать. Вы можете сгладить угол курса вашего автомобиля, усредняя последние несколько дельт. Кроме того, каждый пиксель становится одним «шагом», поэтому вы легко можете управлять скоростью.
В первом случае вы можете иметь специально помеченные конечные точки для мест начала / остановки или точек интереса. В последнем случае просто используйте другой цветовой пиксель на пути для специальных узлов. В любом случае, то, что вы отображаете, вероятно, будет не базовыми данными пути, а каким-то изощренным представлением вашего «парка».
Просто выберите все, что проще, и напишите функцию tick (), которая переходит к следующему пути и обновляет курс вашего автомобиля, когда автомобиль находится в движении. Если вы действительно умны, вы можете выполнить некоторую обработку столкновений на основе радиуса, чтобы машины автоматически останавливались, когда перед ними остановилась машина.