0

ゲームには3〜4人のプレーヤーがいて、多くのオブジェクト(石、木、サボテンなど)があります。オブジェクトとプレイヤーの間の衝突検出を見つける必要があります。

オブジェクトとプレイヤーの間の衝突を見つけるためのスピードパフォーマンスで最も簡単な方法は何ですか。

ステップ移動のプレーヤー位置をオブジェクトクラスに渡して衝突検出を見つけると、パフォーマンスが低下する可能性があります(each_step_of_player * all_objects)。

私が持っていたもう1つのアイデアは、Objectクラスのオブジェクトごとにスケジュール関数を記述し、スケジュール関数の呼び出しごとに、すべてのプレーヤーの位置(Object * all_players)との衝突をチェックすることです。スピードパフォーマンスに関するこのアイデアはどうですか?

他のアイデアはありがたいですか?

4

1 に答える 1

0

グリッドベースの衝突検出を使用できます。

画面を正方形のセルのグリッドに分割します。各セルは少なくとも最大のオブジェクトと同じ大きさです (これは重要です)。各オブジェクトには、オブジェクトの中心がどこにあるかに基づいてセルが割り当てられます。オブジェクトを移動すると、対応するセルに再割り当てされます。これで、オブジェクトを他のすべてのオブジェクトに対して衝突をチェックする必要がなくなりました。そのセルと隣接するセル内のオブジェクトに対してのみチェックする必要があります。

于 2012-08-17T13:24:04.023 に答える