ポケモンやゼルダのような 2D のトップダウン 45 度ゲームがあります。オブジェクトの y 値によって深さが決まるため、オブジェクトは y 値の順に描画する必要があります。たとえば、木の後ろに立っていると、プレイヤーの上に木が描かれ、木の後ろに立っているように見えます。
私の現在の設計では、タイルの列を描き、その列に立っているプレイヤーを描き、次の列を描き、その上に立っているプレイヤーを描きます。このようにして、プレーヤーよりも高い y 値を持つタイルは、深度をシミュレートするためにそれらの前に描画されます。
ただし、現在、私のプレーヤーは、std::vector
すべてのタイルが描画された後に単純に反復および描画されるオブジェクトです。私の方法が機能するには、タイルのすべての行のベクトルを反復処理し、それらが現在の行にある場合にのみレンダリングするか、フレームごとに何らかの方法ですべてのプレーヤーを y 値で並べ替える必要があります。これらの方法はどちらもかなり CPU を集中的に使用しているように見えますが、おそらく私はそれを考えすぎており、このタイプのゲームで奥行きをシミュレートする簡単な方法があります。
編集: このゲームは MMORPG タイプのゲームであるため、多くのプレイヤー/NPC が歩き回る可能性があるため、非常に効率的な方法が必要です。
アイデアやコメントをいただければ幸いです。
ありがとう