web-dev-qa-db-ja.com

グリッド内のエンティティを見つける最も効率的な方法は?

私は最初のゲームに取り組んでいます。タワーディフェンス。これまでのところ、順調に進んでいます。私が(これまでに)抱えている唯一の問題は、エンティティがタワーの視線に入ったかどうかを効率的に発見する方法がわからないことです。これまで、すべてのエンティティを既知の各エンティティで実行してLOSを計算することを検討してきましたが、それは非常に迅速に停止します。次に、タワーごとにバウンディングボックスを用意し、ゲームステップごとにバウンディングボックスに何かがあるかどうかを確認することを考えました。それと同じパフォーマンスの問題があります。誰かが私を正しい軌道に乗せるためにいくつかのアドバイスを出すことができますか?

2
ahodder

区間木を使用してみてください: http://en.wikipedia.org/wiki/Interval_tree

これにより、複数の間隔(タワーの範囲)を保存し、クエリ間隔(エンティティの境界ボックス)を使用して、それらの間隔に対して重複する「刺すクエリ」を作成できます。

ツリーはより高い次元に一般化されます(例:2D)

2
Neal Tibrewala