前回のプロジェクト (2D トップダウン ゲーム) では、非常に単純な衝突検出と、検出後の対処方法がありました。すべてが上下左右の 4 方向にしか移動できませんでした。CDは次のように機能しました:
- 通常どおりオブジェクトを移動します。
- オブジェクトが他のオブジェクトと衝突した場合、それが進行していた方向に応じて後方に移動します (たとえば、上に移動して何かにぶつかると、このオブジェクトのすぐ下に移動します)。
しかし今、私はすべてが 360* で動くことができるというプロジェクトに取り組んでいるので、衝突を検出した後、このオブジェクトをどこに動かせばよいかわかりません。ほとんどのオブジェクトには円型の cd (トップダウン シューター) があるので、次のようなことができます。
- オブジェクトを通常どおり移動する
- オブジェクトが他のオブジェクトと衝突する場合は、これら 2 つのオブジェクト間の角度を確認し、計算された角度を使用して、他の円の端に衝突したオブジェクトを設定します。
それがどのように機能するかの写真:
そして、これがそのようなことをする適切な方法であるかどうかはわかりません。他のアイデアは次のとおりです。
- 新しい位置を計算しますが、まだ保存しません
- 新しい位置が何かと衝突しないかどうかを確認します
- そうでない場合 - 位置を保存
- もしそうなら - 移動しないでください
それを検出するのは簡単ですが、私が推測するギャップがあるでしょうか?では、360* 方向に移動できる丸みを帯びたオブジェクトに直面したときに衝突に対処する方法はありますか?
//編集: また、ゲームはトップダウンの 2D ゾンビのようなシューティング ゲームになります。私はこれらのソリューションの両方をコーディングし、気づいたことがあります: 状況があれば、その場所に立っていると、2 人のゾンビが次々と現れます。最初に私に来ると、彼は立ち止まります。アングルバージョンでは、2番目が彼の周りを回り、私に近づこうとします。他のバージョンでは、彼はただ止まります。エンジェル版ならなんでもいいのですが、「ゾンビ」がたくさんいると、周りを回ったり、ぶつかったりするとジャンプしてしまうことがあります。:| 技術的には、ゲーム内の 2 つのゾンビ間の最小距離を一定にする必要がないため、これを回避できましたが、見栄えが悪く、ゾンビの数を一度に減らしたくない場合があります。