単純なゼルダスタイルのゲームを開発しようとしています。この非常に便利なトピックを見つけました
LoZ:A Link to the Pastはどのようにサブタイル衝突を処理しましたか?
衝突検出メカニズムを開発するためのリファレンスとして使用しています。ただし、理解できなかったことがあります。リンクが建物の背後にある場合、彼の一部のみが表示されます。誰もこの効果を達成する方法を理解するのを助けてくれますか?建物は背景の一部ではありませんか?
単純なゼルダスタイルのゲームを開発しようとしています。この非常に便利なトピックを見つけました
LoZ:A Link to the Pastはどのようにサブタイル衝突を処理しましたか?
衝突検出メカニズムを開発するためのリファレンスとして使用しています。ただし、理解できなかったことがあります。リンクが建物の背後にある場合、彼の一部のみが表示されます。誰もこの効果を達成する方法を理解するのを助けてくれますか?建物は背景の一部ではありませんか?
回答:
通常、2Dタイルゲームには複数のレイヤーがあり、それらは異なるレイヤーでレンダリングされます-一部はプレーヤーの背景にレンダリングされます。
屋根のその部分はプレイヤーの上にレンダリングされるため、プレイヤーはその建物の後ろに行くことができます。
以下は、私のゲームのより良い説明のための画像の例です。
一方でBlodyavengerの回答、それが最も可能性の高いどのように行われるかカバー、ここでは簡単な視点の切り替え(例えば4つのまたは8つの異なる方向、またはいくつかのカメラの標高レベル)を可能にする別の可能性があります:
たとえば、マップのトップダウンビューを検討してください。
ABCDEFGHIJKL
1 +-----=----+
2 | . . |
3 | X o |
4 | . ||
5 | . . |
6 +--=-------+
たとえば、X
高い柱を示しています。オブジェクトごとに、考えられるすべてのパースペクティブの画像を保存します(または同じものを使用します)。描画するときは、現在のパースペクティブの背面にある列または行から始めます。たとえば、南から見た場合の行1です。その後、後ろから2番目に行/列を描画します。この方法では、何かが1つのタイルよりも高い(現在のパースペクティブに引き伸ばされている)場合、背後にあるものを単純にオーバードローします。
(すてきな写真がないのでごめんなさい、私は応用グラフィックスがあまり得意ではありません...)
depthの変数があり、最初に最大深度の画像が描画され、次に他の最小深度の画像が描画されます。そして、各オブジェクトの深さは、そのy座標の負の値に等しくなければなりません。
Depth=-y