標準的なアプローチは次のとおりです(1つを選択)。
- 境界幅を大きくするか、弾丸の最大速度を下げて、1回の更新で壁を飛び越えないようにします(最大距離/最小境界幅を計算するには、少しのピタゴラスが必要です)。
- 通常、連続する衝突検出(CCD)を実行します。通常は、レイキャスティングにより、移動するオブジェクトの前方の線形(2)または平面(3D)表面との衝突を検出します。これはより高価ですが、より適切なソリューションです。2Dラインに対するレイキャスティングは非常に基本的ですが、この場合、すべての境界を直線のポリゴンとして定義する必要があります。
さらに言えば、あなたの代わりに線としてあなたの弾丸をモデル化することができます-あなたのゲームのルックアンドフィールを持つこと収まる場合は、同様にleft4kdead。そうすれば、弾丸はすでに光線であるため、弾丸を光線として近似する必要はありません。ルックスの観点から、これは、弾丸の端に明るいスポットで線を引くか、単に明るい(弾丸の端)から暗い(後端)へのグラデーションとして線を引くと、まともに見えます。モーション。
ほとんどの状況で、衝突検出にグラフィックスを使用することは少し見当違いですが、ピクセル完璧な衝突検出はまさにそれであり、受け入れられているテクニックです。それはすべて、あなたが何を達成したいのか、そしてどれくらいの速さかによって決まると思います。多くのボディとアクションを備えた非常に高速なゲームが必要ない場合は、それを選択してください。それ以外の場合は、上記で説明したアプローチのいずれかを使用する方が適切です。