1

私は現在、html5キャンバスでジャンプ'n'プロトタイプに取り組んでいます。言語は実際にはそれほど重要ではありません。アルゴリズムに関するヒントが必要です。

このイラストを最初に見てください:http://i.imgur.com/3CwBI.png

ご覧のとおり、互いに衝突する2つの長方形があります(白い長方形はプレーヤー、灰色の長方形は静的な障害物です)。

次のフレームを事前に計算しているときに、衝突が発生しようとしている場合は、プレーヤーの位置を修正する必要があります。人間の脳は、画像の白い長方形がプラットフォームの上に着地することを明確に伝えることができます(線形運動を考慮)。しかし、これをプログラムにどのように伝えるのでしょうか。

2Dベクトルでプレーヤーを動かしています。

編集:私はすでに衝突を検出できます。方向を知る必要があるだけなので、障害物の対応する側のプレーヤーの位置を修正できます。

4

1 に答える 1

1

プレーヤーの各コーナーについて、現在の場所と次のフレームの場所の間に線分を描画します。

ここに画像の説明を入力してください

これらの線分ごと、およびプラットフォームを構成する線分ごとに、2つの線分が交差するかどうかを確認します。

ここに画像の説明を入力してください

交差点が発生した場合、プレーヤーは次のフレームでプラットフォームと衝突します。

編集:

90%の確率で、赤い線分はプラットフォームに属する単一の線分とのみ衝突します。赤いセグメントがプラットフォームの左側に衝突した場合、プレーヤーは壁にぶつかりました。セグメントがプラットフォームの上部と衝突した場合、プレーヤーはプラットフォームに着陸しました。

ここに画像の説明を入力してください

コーナーケースの1つは、上面と側面の両方で衝突が発生した場合です。

ここに画像の説明を入力してください

その場合、どの衝突が「実際に」発生するかを判断するには、どちらが最初に発生するかを判断する必要があります。最も早い交差点は、以前のプレーヤーの長方形に最も近い交差点です。上の画像で、右上のプレーヤーが前のプレーヤーである場合、最も早い衝突はプラットフォームの上部との衝突です。

于 2012-08-21T19:00:10.013 に答える