現在、私の非常に基本的なAIフレームワークには、一連のポイントで構成されるギザギザのパスに沿って移動するエージェントがあります。
これは、ある地点から次の地点に位置を移動するだけです。次のポイントに到達すると、次のポイントに向かって移動します。曲線バージョンのパスに沿ってスムーズに移動するようにこれを変更するにはどうすればよいですか?また、曲線を生成するにはどうすればよいですか?
現在、私の非常に基本的なAIフレームワークには、一連のポイントで構成されるギザギザのパスに沿って移動するエージェントがあります。
これは、ある地点から次の地点に位置を移動するだけです。次のポイントに到達すると、次のポイントに向かって移動します。曲線バージョンのパスに沿ってスムーズに移動するようにこれを変更するにはどうすればよいですか?また、曲線を生成するにはどうすればよいですか?
回答:
コントロールポイントは既にわかっているため、補間コードを更新するだけで、曲率のアルゴリズム(エルミートやコサインなど)を使用できます。
これらのサイトは、すぐに使い始めるための優れた説明とサンプルコードを提供します。
ここではグレインに反して、カーブを事前に生成するのではなく、(たとえば)ホーミングを作成するために使用するのと同じロジックを使用して、フレームごとにカーブを処理することをお勧めします-ミサイル。
これは、2つのポイント間に壁がある場合に特別なケースを必要とせず、通常どおり衝突検出を処理するだけなので、はるかに簡単で、おそらくより現実的です。
欠点は、動きが最適に見えないことです。オブジェクトは常に1つのウェイポイントから次のウェイポイントへの最も直接的なパスを取ります。つまり、スプラインとは異なり、ウェイポイント2を既に通過するまでウェイポイント3に向かって回転を開始しません。状況に応じて、ウェイポイントを調整することで修正可能です(問題がある場合でも)。