Wenn Sie eine gekrümmte Strecke wünschen, können Sie Splines verwenden, d. h. mathematisch definierte Kurven, die durch zwei Vektorendpunkte festgelegt werden. Sie legen die Endpunkte fest und lösen dann eine schöne Kurve zwischen ihnen. Eine Suche sollte Quellcode oder mathematische Formeln zutage fördern, die Sie in Quellcode umwandeln können. Das Schöne daran ist, dass Sie die Richtung Ihres Fahrzeugs genau bestimmen und die nächste Position auf Ihrem Weg durch eine Prozentrechnung ermitteln können. Die Schwierigkeit besteht darin, dass Sie eine Kurvenlängenberechnung durchführen müssen, wenn Sie nicht die gleiche Anzahl von Schritten zwischen den einzelnen Endpunkten haben wollen.
Eine andere Möglichkeit besteht darin, eine versteckte Bitmap zu verwenden, auf der der Pfad als ein Pixel breite Kurve gezeichnet wird. Sie können die nächste Position auf dem Pfad finden, indem Sie die Pixel, die Ihre aktuelle Position umgeben, mit einem Fahrtrichtungsvektor abgleichen und den Vektor dann bei jedem Schritt mit einer Deltafunktion aktualisieren. Wir haben diesen Ansatz für einen Prototyp verwendet, bei dem ein "Fahrzeug" mit einem Joystick über verschiedene Pfade "gefahren" wurde, und es funktioniert gut, bis man einige Kreuzungen hat, die die Vektorberechnungen durcheinander bringen. Aber wenn es sich um eine unidirektionale geschlossene Schleife handelt, würde dies sehr gut funktionieren, und es ist ganz einfach zu implementieren. Sie können den Kurswinkel Ihres Fahrzeugs glätten, indem Sie die letzten Deltas mitteln. Außerdem wird jedes Pixel zu einem "Schritt", so dass die Geschwindigkeitskontrolle einfach ist.
Im ersten Fall können Sie speziell gekennzeichnete Endpunkte für Start-/Stopporte oder Points of Interest haben. Im letzteren Fall verwenden Sie einfach einen andersfarbigen Pixel auf dem Pfad für besondere Knotenpunkte. In beiden Fällen werden wahrscheinlich nicht die zugrundeliegenden Pfaddaten angezeigt, sondern eine aufgehübschte Darstellung des "Parks".
Wählen Sie einfach die einfachste Lösung und schreiben Sie eine tick()-Funktion, die den nächsten Pfad ansteuert und die Richtung des Fahrzeugs aktualisiert, sobald es in Bewegung ist. Wenn Sie wirklich clever sind, können Sie einige Radius-basierte Kollisionsbehandlung tun, so dass Autos automatisch anhalten, wenn ein Auto vor ihnen auf der Strecke angehalten hat.