本当に楽しいだけのプロジェクトに取り組んでいるときに、いくつかの問題に遭遇しました。
丸いボール、先のとがった三角形、細い線 (その他の野生動物も) で構成された 2D の世界があります。それらはすべて WorldCreatures のサブクラスです。彼らはこの世界の中を移動することができます。それらが互いに出会うと、衝突が発生します。
私がやりたいことは、それらの間の衝突を検出する方法を作ることです。これが私が今立っているものです:
- 私にとって、Ball-Ball は簡単です。位置からの距離を計算し、それを「サイズ」の合計と比較するだけです。
- ボールと世界の端の間の衝突も単純です - 私はそこからの距離をチェックするだけで、デカルト座標では単純です。
- より一般的な問題は - ライン (あるポイントで開始および終了する) またはそこにある可能性のある他のオブジェクト間の衝突を検出する方法は? 線と点の間の距離も簡単に計算できますが、私が欲しいのは
A
Object が Objectと衝突するかどうかを示すある種の一般的な方法B
。現在のコードは次のようになります。
class WorldCreature:
def detectCollision(self, otherObject):
# do something
if collision:
self.onCollision(otherObject)
otherObject.onCollision(self)
class Ball(WorldCreature):
# someing here
class Line(WorldCreature):
# someing here
ここで、衝突検出メカニズムは、どのオブジェクトが衝突できるかに依存する必要があります。効果もそうでしょう。
メモリ内のすべてのオブジェクトのリストを保持し、すべてのステップでそれらすべてをループする必要がありますか? または、このタスクのパフォーマンスを向上させるためのより良い方法はありますか?