スプライトの描画順の実例

このページはVersion 2018.4.1f1 Personalを対象としています。

更新履歴

参考URL

概要

このページでは、 拙作の2DオンラインアクションRPG(以下FS2と表記)で、 スプライトの描画順をどのように管理しているかの実例を紹介します。 あくまで一例であって、 こう使うのが正しいというわけではないです。 2Dグラフィックス系のアセットを使う予定の場合、 相性の問題が発生する可能性があるため、 このページのことはあまり参考にしないほうがいいかもしれません。

FS2の仕様

FS2は斜め見下ろし型のアクションRPGです。 マップの上にキャラクター、キャラクターの上にエフェクトが表示されます。 また、キャラクター同士は下側にいるキャラクターの方が手前に表示されます。 さらに、プレイヤーキャラクターは見た目を様々にカスタマイズできます。

スプライトの描画順

スプライトの描画順は 「SortingLayer>Order in Layer>Z値」の優先順位があります。 FS2の仕様と同じく3種類の優先順位があったので、 順番に当てはめました。

マップ・キャラクター・エフェクトなどの順序

マップ・キャラクター・エフェクトなどの描画順は、 SortingLayerで管理しています。 FS2ではSortingLayerは「Map、Drop、Default(※キャラクターなど)、Effect、Darkness」の順に定義しています。 SortingLayerはSpriteRendererコンポーネントのSortingLayerから変更できます。

キャラクター同士の順序

キャラクター同士の順序は、 Order in Layerで管理しています。 FS2は斜め見下ろし型のゲームなので、下側にいるキャラクターの方が手前に表示されるよう、 SpriteRendererコンポーネントのsortingOrderプロパティを毎フレーム「(int)transform.position.y * -1 + 7」の値に設定しています。

キャラクターの見た目の順序

FS2ではプレイヤーキャラクターの見た目を様々にカスタマイズできます。 例えば肌の色、目の色、髪型、髪の色、服の色などのほか、 装備やアクセサリも自由に装備できます。 これを実現するために、画像ファイルをそれぞれのパーツに分け、重ね合わせて表示しています。 具体的には、下の画像のように、PlayerPrefabの子ゲームオブジェクトとして「SpriteShadow、SpriteSkin、SpriteSclera、SpriteIris、SpriteHair、SpriteInner、SpriteArmor、SpriteAccessory_0、SpriteAccessory_1、SpriteAccessory_2、SpriteAccessory_3、SpriteAccessory_4、SpriteWeapon、SpriteShield、SpriteBarrier」を含め、 そのゲームオブジェクトのPositionのZ座標で、重ね合わせの順序を管理しています。

無理やり3D表示にすると、プレイヤーキャラクターは下の画像のようになります。

<>

戻る

inserted by FC2 system