3

私は HTML5 ベースのトップダウン レーシング ゲームを作成しています。車をトラックに配置するために、次の 2 つの解決策を使用することを検討しました (ある程度は取り組んでいます)。

  1. ペーパーJS
  2. パタニメーター

オブジェクトをパスに沿って移動させることができるという意味で、これらの両方を個別に機能させましたが、私が持っている障害は、各車がレーストラックの両側に独自の開始位置を持っていることです (したがって、常に開始するとは限りません)パス内の同じポイント)。また、最初のコーナーの後、車は一列に並ぶ必要があります。

もう1つの要因は追い越しです。2 つのオブジェクトが交差するときに Javascript を使用して問題を解決することができましたが、背後のオブジェクトが前のオブジェクトを効果的に「回避」してからレーシング ラインに戻るようにする必要があります。

ここで解決すべきことはたくさんありますが、上記のいずれかを機能させるための狡猾なアイデアを誰かが持っているかどうか疑問に思いましたか?

あなたの助けをいただければ幸いです!!

ありがとう

4

2 に答える 2

0

通常、パスファインディングはステートレスで機能します。どの出発点を選ぶかは問題ではありません。使用されるアルゴリズムが一般的なポイントを開始値として取得できない場合、目的は実際には無効になります。私はあなたが言及したものには関与していませんが、彼らはそれを支持するかもしれません.

トラックの周りに可能性のあるパスを 1 つだけ構成すると、各車が追従します。車が別々のトラックで開始できるようにするには、車の番号などのスカラーで位置をオフセットするだけです。つまり、コースに対してパスから位置をオフセットします (トラックの変更をエミュレートします)。

それらすべてに同じトラックを選択させるには、「同じトラックに移動する」という 1 つのポイントを設定するだけで簡単です。これにより、全員のスカラーが 1 に設定されます。

追い越しの場合、通常、ピタゴラスの定理を使用して 2 台の車の間の直線距離を計算します。車 A が車 B に近づくと、車 A のオフセット スカラーが車 B のオフセット + 1 に設定され、外側のトラックが選択されます。もちろん、この遷移はスムーズなエクスペリエンスを提供するために補間/補外されます。その後、経過したら、再度 1 にリセットします。

于 2014-08-05T06:57:12.967 に答える
0

混乱を避けるために、明確な座標系が必要です。
この場合、開始点から現在の位置の basePoint までの距離として「x」が必要です。そして y は、車とカーブの間の、カーブに対して局所的に垂直なシフトです。

このようにして、多くのことが見やすく/実行しやすくなります。
y = 0 の場合は、車が中央の曲線上にあることがわかります。
追い越せるかどうかを知るには、( overTaker.y +- overtaker.width/2 , overTaken.y +- overTaken.width/2, roadWidth) で計算する必要があります。
実際、この座標系を使用した通常の BBox テストは、衝突をテストするのに十分なはずです。

于 2014-08-08T09:02:18.057 に答える