タイルマップの上に複雑な衝突領域を定義するにはどうすればよいですか?


13

多くの人が推奨しているように、私はTiledマップエディターを使用してゲーム用のマップを作成していますが、特にlibgdxフレームワークはTiledのマップ用のAPIを提供しているので素晴らしいです。

マップエディターで衝突可能なタイルを定義できるかどうかを定義できるため、コード内の衝突に対処できます。しかし、現在、タイルを衝突可能領域と衝突不可能領域に分割する必要がある状況にあります。手動で、2つの領域の境界のポイントとラインを定義し、プログラムでそれを処理できると思います。しかし、それは多くの時間のかかる仕事です。

それで私はたくさんのグーグルでこの物理ボディエディタを見つけましたこれは、上記のプロセスを自動化するための素晴らしいツールのようです。ただし、システムは展開された各イメージで動作し、その操作のためにイメージを展開しても動作するかどうかはわかりません。

衝突領域を定義するこのプロセス全体を実行するより良い方法があるのだろうか。どんな提案も大歓迎です。

回答:


22

いつものように、私はテーブルにいくつかのアイデアを投げます。この問題に対処する方法は確かにいくつかあります。私が覚えていた3つについて説明しますが、これらのアプローチのうちどれがプロジェクトに適しているかを判断するのはあなた次第です。

アイデア1:タイルの繰り返し可能なパターン

システムは、考えられる衝突領域をサポートするのに十分な柔軟性が必要ですか、それとも、構築できるタイルシェイプの有限セットに分割し、特殊なケースとして扱うことができますか?このアイデアを読むためのリソースのペアは次のとおりです。

アイデア2:タイルマップを無視する

はい、タイルマップを完全に無視し、衝突領域の別の多角形表現を保存します。次に、このジオメトリをタイルベースのマップの上にオーバーレイし、衝突を処理します。物理学が必要ない場合は、次のリソースを確認してください。

そうでなければ、おそらくあなたがリンクしたツールを使用できると思います。

アイデア3:ピクセル完全衝突検出

ピクセルパーフェクトコリジョンを使用し、別のマスクまたはタイルのアルファチャネルのみを使用して、可変コリジョンエリアをエンコードします。インスピレーションについては、次のガイドを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.