0

前回のプロジェクト (2D トップダウン ゲーム) では、非常に単純な衝突検出と、検出後の対処方法がありました。すべてが上下左右の 4 方向にしか移動できませんでした。CDは次のように機能しました:

  1. 通常どおりオブジェクトを移動します。
  2. オブジェクトが他のオブジェクトと衝突した場合、それが進行していた方向に応じて後方に移動します (たとえば、上に移動して何かにぶつかると、このオブジェクトのすぐ下に移動します)。

しかし今、私はすべてが 360* で動くことができるというプロジェクトに取り組んでいるので、衝突を検出した後、このオブジェクトをどこに動かせばよいかわかりません。ほとんどのオブジェクトには円型の cd (トップダウン シューター) があるので、次のようなことができます。

  1. オブジェクトを通常どおり移動する
  2. オブジェクトが他のオブジェクトと衝突する場合は、これら 2 つのオブジェクト間の角度を確認し、計算された角度を使用して、他の円の端に衝突したオブジェクトを設定します。

それがどのように機能するかの写真: 物理学のアイデア

そして、これがそのようなことをする適切な方法であるかどうかはわかりません。他のアイデアは次のとおりです。

  1. 新しい位置を計算しますが、まだ保存しません
  2. 新しい位置が何かと衝突しないかどうかを確認します
  3. そうでない場合 - 位置を保存
  4. もしそうなら - 移動しないでください

それを検出するのは簡単ですが、私が推測するギャップがあるでしょうか?では、360* 方向に移動できる丸みを帯びたオブジェクトに直面したときに衝突に対処する方法はありますか?

//編集: また、ゲームはトップダウンの 2D ゾンビのようなシューティング ゲームになります。私はこれらのソリューションの両方をコーディングし、気づいたことがあります: 状況があれば、その場所に立っていると、2 人のゾンビが次々と現れます。最初に私に来ると、彼は立ち止まります。アングルバージョンでは、2番目が彼の周りを回り、私に近づこうとします。他のバージョンでは、彼はただ止まります。エンジェル版ならなんでもいいのですが、「ゾンビ」がたくさんいると、周りを回ったり、ぶつかったりするとジャンプしてしまうことがあります。:| 技術的には、ゲーム内の 2 つのゾンビ間の最小距離を一定にする必要がないため、これを回避できましたが、見栄えが悪く、ゾンビの数を一度に減らしたくない場合があります。

4

1 に答える 1

0

少し前に同様の質問がありました。最初に、各反復で 2 つのボールが衝突しているかどうかを確認し、衝突している場合は新しい方向と速度を計算しました。ただし、2 つのボールが互いに移動する可能性があるため、奇妙な衝突が発生することがありました。

これを防ぎ、正確に計算するには、衝突を検出した後に衝突の正確な時間を計算する必要があります。リンクした質問の下部に、これを計算するコードを追加しました。

于 2013-05-13T23:57:45.217 に答える