衝突検出のトピックを検索しましたが、それらはすべて検出自体に関するものでした。私の質問は、検出プロセスの前後についてです。私は最初の大きなゲームを書いていますが、できるだけ効率的にしたいと思っています。
ゲームの前提は、競技場で船を飛ばすことです。このフィールドでは、環境によって提供されるさまざまな性質の障害物、敵の船、および宇宙を飛び回る発射体が発生します。オブジェクトは、必要に応じて、または必要に応じて、中心などを中心に回転できます。
テストをセットアップするための私の考えは、オブジェクトが何らかの方法でキューとリストに読み込まれるようにすることです。次に、ゲームはキューの先頭にあるものをすべて取得し、リスト内のすべてのものに対してテストします。最初に、リスト内のものがそれ自体ではないことを確認します(これにより、常にすべての衝突が発生します笑)。次に、ゲームは、キュー内のオブジェクトとリスト内のオブジェクトの間に衝突があるかどうかを確認します。衝突が発生した場合、衝突したことを示すフラグがオブジェクトに付けられ、参照またはオブジェクトが衝突したものすべてが保存されます。
たとえば、A が B と衝突した場合、ゲームは A に衝突関数を実行し、B に衝突関数を実行するように指示し、B への参照を A に格納し、B は A への参照を格納します。
ゲームは、オブジェクトがリストを通過するまで、キュー内のオブジェクトの衝突をチェックし続け、オブジェクトが複数のオブジェクトにぶつかったり、ぶつかったりするたびに上記の処理を行います。
たとえば、A、B、C の 3 つのボールがあり、同じフレーム内で B と C の両方が A に当たった場合、A の速度は B によって変更され、次に C によって変更され、B と C は次のようになります。 A によって変更された速度を持っています。
これは、これを行うための賢明な方法でしょうか? 現在、衝突の実際の検出については心配していません。利用可能な記事やチュートリアルがたくさんあり、その問題を解決するための私自身の考えもあります。前後に話すものに出くわしたことはありません。キューとリスト内のどれだけのものが大量の負荷を引き起こし、ゲームの速度が低下し始めるかはわかりません. 現在、私のオブジェクトはすべて、x、y 位置、x、y 速度、それらが向いている方向、およびその他のいくつかのものです。
今、私は関係のないことについてとりとめ始めていると思います。洞察や知恵をいただければ幸いです。