16

ねえ、私は現在、2D ビデオ ゲームでコリジョン レスポンスを実装するさまざまな方法を探しています。このチュートリアルに似たものが Metanet にあります: N チュートリアルXNA で何かを実装しようとしていますが、どの言語でも問題ありません。私は 実際の理論よりもプログラム的に実装することに興味があります。初心者向けの資料をもっと好むと思いますが、より高度なトピックを歓迎します.

誰かが良い 2D 衝突応答の記事/本を提案してくれませんか?

(追伸:検出よりも応答に興味があります)

4

7 に答える 7

15

あなたがすでに言及したNチュートリアルは、最初から素晴らしいリソースです。また、非常に優れた記事2Dポリゴン衝突検出をお勧めします。優れたC#実装と、分離軸定理を使用したポリゴン衝突検出の例が付属しており、いくつかの概念をより適切に説明しています。

衝突への対応に関する限り、それはシナリオによって異なります。ゲームの場合、現在の速度に基づいて衝突の可能性を確認してから、実際の速度を調整して衝突を防ぐことができます。ある種の「バウンス」効果を実装することもできます。いずれにせよ、オブジェクトの速度と方向の両方を調整している可能性があります。

分離軸定理を使用して衝突検出を実行したり、ポリゴン投影を使用して特定の軸上のターゲットまでの距離を検出したりできます。(ほとんどの場合、移動するベクトル)。

于 2010-08-23T04:29:06.610 に答える
3

私はこれが本当に好きです.1週間前に到着したばかりで、相対論的効果を除いて必要なものはすべて揃っています:

http://www.amazon.com/Physics-Game-Programmers-Grant-Palmer/dp/159059472X

于 2010-07-15T00:21:56.257 に答える
1

どのくらいの詳細が必要ですか?これらの質問のいくつかに答えることは、あなたが必要なことをしないパッケージを排除するのに役立ちます。

オブジェクトの回転について心配する必要がありますか?次に、レバーアーム、角運動量、慣性モーメント、およびトルクについて考慮する必要があります。

変形を気にする必要がありますか?次に、有限要素解析、応力/ひずみなどに入る必要があります。これは、オブジェクトが外力に対して内部でどのように応答するかを説明するものです。

摩擦効果はどうですか?次に、摩擦係数、または場合によっては空気抵抗の速度モデルが必要になります。

重力効果?電磁効果?他の力?

于 2010-08-18T16:29:16.467 に答える
1

衝突応答の基本的な答えが必要な場合は、次のとおりです。

for each pair of objects that collide
    ask gently to the collision detection lib their interpenetration distance
    Apply an impulse (i.e. a force in the duration of the frame) to both objects :
        force proportional to penetration depth (you will have to tune the coef by hand)
        direction : perpendicular to the collision normal.
        application point : the collision point (approximately, since it s not a point anymore but a volume)
integrate (Euler, Verlet, )\
于 2010-08-24T07:23:23.597 に答える
0

私も同じ情報を探していましたが、これまでに見つけた中で最も便利なものは

http://www.myphysicslab.com/collision.html

ここで私にとって悪いのは、これには摩擦がないということです(接線衝突インパルスは通常のインパルスのみ)。そのような摩擦インパルスのある方が良いと思いますが、それを正しく実装する方法のチュートリアルはまだ見つかりません

于 2013-05-17T09:25:55.010 に答える
-1

物理エンジンは非常に複雑です。既存のものを使用する方がはるかに優れています。

  • Farseer (C#、古いバージョンの Box2D から派生)。
  • Box2d (C++、.NET バインディングあり)
  • シマリス(C、C# ポートはないと思いますが、作成できます)。

ゲームで物理演算を使用する場合は、Farseer または Box2D バインディングを使用します。物理について学びたい場合は、Box2D または Chipmunk の C# ポートを作成することを検討してください。興味があるだけなら、彼らのコードはすべてオープンソースです。

于 2010-07-16T17:49:42.640 に答える