サーバーでの作業を開始しましたが、問題は、各プレイヤーが見ている他のプレイヤーを検出して、周囲のプレイヤーに関する情報を送信できるようにする方法が必要なことです。特定のプレイヤーに。
最初に、2D サークル オブジェクトをプレーヤー オブジェクトにアタッチし、データ構造内のすべてのプレーヤーに対して衝突チェックを行うことを考えましたが、これは非常にパフォーマンスが必要です。これに適したアルゴリズムはありますか? 私を助けてください!
円と衝突検出ライブラリを使用する代わりに、長方形を使用して手動でチェックを行うことができます。これは、画面とプレイ エリアがおそらく長方形であるため便利です。
int dist = 100;
if (Math.abs(a.x - b.x) < distX && Math.abs(a.y - b.y) < distY) {
// send player b to player a
2 点間の距離を手動でチェックすることもできます。これは円を使用するのと同じですが、衝突検出ライブラリのオーバーヘッドが取り除かれます。
プレーヤーが極端に速く動かない場合は、すべてのティックではなく、10 ティックごとにこのチェックを実行できます。