3

次のウェブサイトのコードを使用しました。

しかし、私が直面している問題は、オブジェクトの座標を取得することです。

説明させてください。コードによると。グラフィック イメージを PNG 形式で追加し、ここでクラスを参照するだけです。私が達成しようとしているのは、単純な衝突検出メカニズムです。迷路を(PNGとして)追加しました。そして、迷路内の空白のパスを通過するオブジェクトを (PNG として) 用意します。これを行うには、オブジェクトが移動する座標内の空白を知る必要があります。

オブジェクトを取得できる(x、y)座標として空白を取得する方法を誰か教えてもらえますか?

4

1 に答える 1

2

迷路に 1 つの入口と 1 つの出口がある場合、または複数の入口または出口の目的地を含む迷路の周りのオープン エリアがある場合、A* 検索アルゴリズムがその仕事を行います。

これは、CPU で行うのが最適な場合があることに注意してください。オブジェクトのサイズを処理するには、パス セグメントの条件を変更する必要があります。単純なアプローチでは、パスの幅が 1 画像ピクセルであると仮定します。

複数の目的地に一致するようにアルゴを変更すると、出口 (1 つの入口から多くの出口) のための空き領域が必要なく、さらにスムーズに機能する可能性があります。それぞれ複数の開始点またはエントリの場合、変更により、最短のものを見つけるために N 回の実行とパスの比較が行われる場合があります (多くのエントリから多くの出口へ)。多くの出口への 1 つのエントリ。複数の目的地へのパスが必要な場合は、それらがすべて見つかるか、アルゴリズムが「停止」して停止するまで検索を続けます。

アップデート:

最良かつ最も柔軟な方法は、球体、任意の凸包など、さまざまな形状タイプをサポートする物理ライブラリを使用することです。たとえば、「弾丸物理」ライブラリを使用して、物理シミュレーションなしで衝突検出のみを行うことができます (しかし、なぜ?)。2D でのフラグメント ベースの衝突検出は、OpenGL オクルージョン クエリを使用して実現できます。これは、複雑な形状の場合に高速になる傾向があります。

画像を統合するには、他の形状が定義されている座標空間で複数の壁オブジェクトを並べ替えるために、画像を変換/スケーリングする必要があります。

要するに、任意の形状の頂点データを使用した衝突検出は、開発と実行時にかなりコストがかかります。これは、描画されるオブジェクトの単純化された形状を表すために使用されるため、弾丸ライブラリの衝突形状が役立つ場所です。

于 2012-12-16T17:09:43.530 に答える