タイルマップのレンダリング中に不均一なタイルをどのように処理しますか?


13

ここに画像の説明を入力してください

ここに、私が確信できないタイルマップで何をしたいのかを示します。ご覧のとおり、上部の壁は下部および側面の壁よりもかなり大きくなっています(これは、[Lのように正方形のような奇妙な形状]であるコーナーと、現在のタイルの40x40px )。

ここに画像の説明を入力してください

また、タイルに使用しているタイルシートを添付して、他のタイルと比較してコーナーとトップがどのように見えるかを示しています。

私が考えているのは、WxHの代わりに幅と高さのタイルを使用すると、同じ配列を使用してそれらを描画できる可能性があるということです?これがどれだけうまく機能するかわかりませんが、異なる値を持つブロックがプレイヤー/ NPCが踏むことができないブロックであった場合、それは問題ではないかもしれませんが、それが実行可能かどうかもわかりません解決。

私が現在どのように処理しているかを見たい場合の私のコード:Map.javapastebin)(edit:imはそれを処理していない、つまり現在どのように地図を処理しているかを意味する)

tl; dr-2D風のタイルマップを取得して、異なるサイズのタイルに変更するにはどうすればよいですか?または私がやろうとしていることを行うより良い方法はありますか?グーグルで探しているメソッドの名前はありますか?

回答:


19

これを行うには、2つの標準的な方法があります。

  • 非標準のタイルサイズを標準のタイルサイズに分割します。したがって、これらの壁のストリップは、レベルエディタで一緒に配置することがわかっている正方形のタイルの「スタック」になります。初期のファイナルファンタジーゲームのようなゲームはこのように機能しました。
  • タイル片を標準のタイルの高さよりも高くします。タイルをタイルの長方形の下部に揃えて、通常のタイルの高さよりも高く描画できるようにします。マップを描画するときは、背面(画面の上の方のタイルの正方形)から始まり、下部のタイル(画面の下部にあるタイル)で終わるタイルを描画します。これにより、前景の背の高いタイルが背景のタイルの上に適切にオーバーレイされます。このアプローチでは、タイルの幅は1つのタイルに制限されていることに注意してください。

これらのアプローチのいずれかまたは両方を実行できます。「タイルのスタックに分割する」アプローチを行うゲームでさえ、一部のオブジェクト(ツリーなど)がタイルの高さの制限を超えて、すべてのレイヤーを確認するために上下のマップ描画順序を強制することがよくあります。正しく。


2
2番目のアプローチの場合は+1。基本的には、タイルマップからマップ上のオブジェクトに移動します。
Kromsterは、サポートモニカ

完璧なありがとう、私はそれが2番目のオプションに似ているかもしれないと思ったが、私はそれを標準化された方法で行っていることを確認したかった。= D
レイテンシ

2

標準サイズに合うように、奇数サイズのタイルをスライスしてさいの目に切ります。タイルマップのポイントは、すべてを同じサイズにすることで、多くの速度と実用性が得られることです。

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