2つの深度を持つゲームオブジェクトをどのように処理しますか?


8

プレーヤーの下のオブジェクトの下部、プレーヤーの上の上部

画像に表示されているものを壁1つでできるようにしたいと考えています。プレイヤーは同じオブジェクトのどちら側でも歩くことができるはずです。つまり、同じ壁が主人公から降りたときは主人公の下にあり、上から来た場合は主人公の上にあります。

同じ壁の2つの深さのようなものなので、それを前後に描くだけの問題ではありません。オブジェクトを2つにカットすることもできますが、これは簡単な(そしておそらく計算コストがかかる)ソリューションです。どうすればよいですか?


3
オブジェクトを2つに分割するのが最も自然な方法です。上部はキャラクターの背後にあり、下部はプレイヤーとキャラクターの間にあります。まだ計算コストが高いわけではありません。両方の部分が互いに離れないようにする必要があります。
Fabinout 2013

たぶんそうしなければならないでしょうが、他のアイデアはありますか?
Xkynar 2013

回答:


8

これを行うには3つの方法があります。どちらが適しているかは、作成しているゲームの種類(グラフィック)によって異なります。

  1. ユーザーFabinoutが既にコメントしているように:「オブジェクトを2つに分割する…上部はキャラクターの背後にあり、下部はプレイヤーとキャラクターの間にあります。」厳密にタイルベースのゲームを作成している場合(表示されたパスは壁の近くにある2つの可能なパスのみです)、これはおそらく良い方法です。これが機能するためには、上部パスと下部パスの間の距離が少なくともキャラクターの高さと同じでなければならないことに注意してください。

    この方法の欠点は、この特定のケースのような場合にのみ役立つことです。スプライトをスタックするための一般的な戦略ではありません。

  2. すべてのスプライト(プレーヤーとシーナリーの両方)を、「地面レベル」の位置(壁の底、プレーヤーの足)の順に上から下に描画します。これにより、壁が正しい面に自動的に表示されます。これは、「アイソメトリック」および「2D RPG」スタイルのゲームの一般的な戦略です。

    これのもう1つの利点は、オブジェクトがお互いを通過しても、一般的に見栄えがよいことです。たとえば、他の人の動きを妨げないキャラクターです。背の高い草原を歩く。欠点は、描画順序を効率的に決定する必要があることです(たとえば、スプライトを並べ替えるか、スプライトが何であるかを知っているタイルの2D配列を持っている)。同じ地上レベル。

  3. キャラクターがどちらか一方を占める「フロントレイヤー」と「バックレイヤー」を用意します(壁は後ろから前に描かれます)。壁へのアプローチ方法に応じて、キャラクターはトリガーゾーンによって前面または背面のレイヤーに切り替えられます。これがソニック・ザ・ヘッジホッグのゲームがループ・ザ・ループのようなものを処理する方法です。

    利点は、レベル要素を構築するために基本的に2つの独立した2D平面を持つことができることです。ただし、これは垂直方向の動きが跳ね上がるゲームに適していますが、グラフィックの形状から、ゲームは垂直方向の画面上の動きが地面の前後に移動しているように見え、さらに多くのその次元の2つの異なる位置より。


#3のようなレイヤーを使用することで、ほとんどの古いコンソールのサイドスクロールトリックが機能しなくなりました。
Patrick Hughes

1

オブジェクトをY値の順に描画します。これにより、「より遠く」(画面の上の方)のオブジェクトが「より近い」オブジェクトの前/下に描画されます。とても簡単です。

より一般的には、オブジェクトに深さの値(Yゲームとニーズに応じて暗黙的に基づくか、または明示的に設定される場合があります)を指定し、その順序でレンダリングします。

これが「画家のアルゴリズム」です。

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