曲線トラックが必要な場合は、スプラインを使用できます。スプラインは、2 つのベクトル エンドポイントによって指定される数学的に定義された曲線です。エンドポイントを下に垂らし、それらの間の素敵な曲線を解きます。検索により、ソース コードまたはソース コードに派生できる数学が明らかになるはずです。これの良いところは、パーセンテージ計算を行うことで、車両の進行方向を正確に解決できるだけでなく、経路上の次の場所を取得できることです。難しいのは、エンドポイントの各セット間で同じ数のステップが必要ない場合は、曲線の長さの計算を行う必要があることです。
別の方法として、非表示のビットマップを使用し、パスを 1 ピクセル幅の曲線として描画する方法があります。現在の場所の周囲のピクセルを移動方向ベクトルに一致させ、各ステップでデルタ関数を使用してベクトルを更新することにより、パス内の次の場所を見つけることができます。このアプローチは、ジョイスティックを使用して「車両」がさまざまなパスに沿って「駆動」されるパス移動プロトタイプに使用され、ベクトル計算を混乱させる交差点が発生するまで問題なく機能します。しかし、それが一方向の閉じたループである場合、これは問題なく機能し、実装は非常に簡単です。最後のいくつかのデルタを平均化することで、車両の進行方向の角度を滑らかにすることができます。また、各ピクセルが 1 つの「ステップ」になるため、速度制御が簡単になります。
前者の場合、開始/停止場所または関心のあるポイント用に特別にタグ付けされたエンドポイントを持つことができます。後者では、特別なノードのパスで別の色のピクセルを使用するだけです。いずれの場合も、表示されるのはおそらく基本的なパス データではなく、「公園」をきれいに表現したものです。
最も簡単なものを選んで、車が動いているときはいつでも次のパスの場所に進み、車の方向を更新する tick() 関数を記述します。本当に頭が良ければ、半径ベースの衝突処理を実行して、トラックの前の車が停止したときに車が自動的に停止するようにすることができます。