爆発iforce2dページをチェックアウトすることをお勧めします。パフォーマンスと精度のトレードオフで爆発を処理するさまざまな方法を検討する素晴らしい仕事をします。ここで要約する3つの方法があります。ですから、これは単に私が研究中に見つけた情報を要約したものであり、それは私自身の仕事ではありません。
また、ここでは力ではなくインパルスを適用します。なぜこれを読んで理解するために。
近接法
これは、Byte56が答えで説明したのと同じ方法です。コンセプトはシンプルです。爆発ポイントを持ち、そのポイントから離れた反対方向にインパルスを適用し、距離に基づいた強さですべてのオブジェクトに影響を与えます。
長所:
短所:
- 爆発は不動の物体と静的な物体を通過します。
- 爆風の影響エリアにあるオブジェクトは、重心までの距離のみをチェックするとスキップされる場合があります。
- 表面積は考慮されません。
- すべてが一度に影響を受けます。
レイキャスト法
これは非常に単純で、爆発の起点から光線を投げ出し、距離によって指示される衝撃でオブジェクトに衝突するときに衝撃を適用します。
長所:
- 発射物の方法よりもパフォーマンスが低くなります。
- オブジェクトによって爆発がブロックされました。
- 考慮される表面積。
短所:
- すべてが一度に影響を受けます。
- 爆発が大きいほど、爆発がすべてに影響することを確認するために必要な光線が多くなります。
- 近接法よりもパフォーマンスが集中します。
パーティクル法
私の個人的なお気に入り。RaySastingの方法に似ていますが、レイの代わりに物理エンジンを活用して、シーンと相互作用する小さなペレットを吐き出します。
長所:
- コードごとに非常に簡単。ボールを生成し、それぞれにインパルスを適用します。ティックごとに記述するコードはありません。ただし、爆発が完了した後、ボディを無効化/リセットするタイマーがあります。
- 爆発はオブジェクトによってブロックされます。
- 表面積が考慮されます。
- 爆発は表面から反射します。
- 爆発から離れたオブジェクトは、よりゆっくりと反応します。
- パーシャルを生成する基礎としてボールを使用して、エフェクトが爆発の影響を正確に反映できるようにすることができます。
短所: