2017-09-26 11 views
2

以下の2つのポリゴンを表すイメージスプライトがあります。これらのポリゴンはスプライト領域を大まかに表します。私がしたいことは、これらのポリゴンを使ってスプライトの重なり(または衝突)を検出することです。ただし、緑の四角内で重なりが有効である必要があります。Libgdxのスプライトの一部で重なり検出

(これは彼らがより近くに移動されたときに私が実装しようとしていますがパズルのピースのスナップされ、ジグソーパズルゲームです)しかし私は、この1つは全体のポリゴンの重複を検出しIntersector.overlapConvexPolygons(adjacentPiece.polygon, currentPiece.polygon);を試してみました。

重複を検出するために私がここで行うことができる巧妙なこと。

enter image description here

enter image description here

+0

衝突のためにボックス2dを使用するとよいでしょう。 –

答えて

1

私はあなたのアプローチは、上に複雑になるかもしれないと思います。あなたのパズルピースがお互いに衝突する必要がある場合は、物理境界を維持することができますが、そうでない場合は完全に削除することができます。

いずれにしても、2つのピースがスナップするかどうかを検出するには、ピースの4つの基本辺のそれぞれのほぼ中央にポイントを近似することができます。ピースが互いにぴったり合うかどうかをテストするには、2つのピースの両側にあるポイント間の距離を測定し、使用するスレッショルド値より小さいかどうかを確認するだけです。

典型的なパズルゲームの場合、プレイヤーがピースをリリースしたときにこれを確認する必要があるだけなので、すべての潜在的なマッチでブルートフォースサイクルがかかるのであれば、目立ちませんそれはプレーヤーがピースをドラッグしている間は行われないからです。

+0

ありがとう。新しいイラストをご覧ください。これはあなたが意味することですか? この画像に基づいて、Y距離を測定し、それをしきい値と比較します。 Xはどう? – pats

+0

正確ではありません。私はあなたがそれぞれのパズルピースの4つのポイントを持っていることを意味します、1つは4つの側面のそれぞれの中央にあります。全体の中心にある単一の点ではありません。 – Tenfour04

+0

ありがとう、私はそれを試してみるよ。私はパズルピースのためのタッチエリアを作成するためにポリゴンを作成しました。あなたはこれに対してより良いアプローチを知っていますか?ここに質問があります https://stackoverflow.com/questions/46292589/limit-touch-area-to-texture-area-in-libgdx/46293793#46293793 – pats

1

すべてのジグソーパズルが通常サイズの場合、各ジグソーパズルには通常の四角形を簡単に使用できます。形状を定義するために使用された四角形は、ジグソーパズルのソリッド部分と押し出された部分の中間にあります。

あなたの画像から、私は四角形を図示の部分に適用しました。

enter image description here

+0

ありがとう、私はこの道を続けています。あなたは完全な正方形の絵からパズルピーススプライトを作成する方法を知っていますか?現在、私はアンドロイドメソッドからパズルピースイメージを動的に作成し、libgdxにロードします。翻訳に問題があります。完全な質問https://stackoverflow.com/questions/46271718/split-a-texture-into-puzzle-pieces-in-libgdx?noredirect=1#comment79521703_46271718 – pats

関連する問題