直接的な助けよりもアドバイスを求めています。
XNA で 8 ビットのプラットフォーマー ゲームに取り組んでいます。私はおそらくすでに 160 時間もその作業に没頭しており、所有しているエンジンに問題が生じ始めています。これは基本的に、XNA プラットフォーマー デモの適応/修正バージョンです。私のタイルのすべてまたはほとんどは 32x32 ですが、机のように幅 64 ピクセル、高さ 32 ピクセルのものもあります。植物のように、幅 32、高さ 64 のものもあります。
XNA チュートリアルの作成者がタイル マッピングを行うのと同じように、一度に .png を 1 つだけ gpu に送ります。アニメーション化されたスプライトには、キャラクターのさまざまなフレームのタイル マップを使用します。タイル マップ データは、XNA チュートリアルと同じようにテキスト ファイルを読み込んでいます。
幅の広いタイルと背の高いタイルにはどのように対応すればよいですか? 2 層のタイル システムを作成する必要がありますか?
現在、透明なタイルを使用して幅の広いタイルを拡張しています。
椅子付きデスク:
椅子 http://dl.dropbox.com/u/8446900/game_screen_desk.png
.....
...h.
..d".
#####
植物と椅子:
デスク http://dl.dropbox.com/u/8446900/game_screen_plant.png
..p...h.
..,...,.
########
椅子は 'h'、'd' は机、'p' は植物、',' は透明な背景タイル (ユーザーとの対話なし) です。'"' は、ユーザーがその上に立つ (机を拡張する) ことができる透明なタイル用です。問題は、ご覧のとおり、背景に穴が開いているように見えることです。
実際のタイル マップを作成し、すべてを 1 つの大きな png に結合する必要がありますか? 私が取ることができる別のオプションは、実際に各幅または高さのタイルを 2 つの異なるタイルにカットすることです。プロはこれをどのように行うでしょうか?私は、現代のプラットフォーマーがどのように動作するかについて、簡単で汚い修正を探しているわけではありません。
更新: 回答を確認した後、スプライトをシートにパックする非常に便利なツールを見つけました。
http://spritesheetpacker.codeplex.com/
更新: 新しくアップグレードしたタイル エンジンは、はるかに高速で、ほぼ同じくらいシンプルです。以下のアドバイスは素晴らしかったです。強く推奨する。