スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

レイヤーの設定

画面上にオブジェクトが増えてくるとレイヤーを設定したくなりますよね。
今回はAndengineがもつレイヤー機能(setZIndexメソッド)について解説致します。

Screenshot_2014-12-14-22-48-20.png

まずレイヤーとは"日本語で階層"という意味で、ゲームでは"オブジェクト同士の重なり順"を意味します。
2Dのゲームでは3Dと違い一点の視点からしかオブジェクトを見ることができないので、
オブジェクトには必ず優先順位を設定してあげないといけません。

構文だけじゃ分かりづらいと思うので画像を用意しました。ご覧ください。

Screenshot_2014-12-14-22-38-25 (2)

マリオと草が重なっているのが分かりますよね。
これは「マリオは草よりも手前に表示させなさい。」とsetZIndexメソッドを使って命令しているからです。
もし、この命令を忘れてしまうと、(コードにもよりますが…)スタート地点にある草はマリオより奥に表示されても
画面スクロールによって新たに生成された草ではマリオよりも手前にきてしまいます。(理由は後述。)

もちろんマリオと草だけではなく、ゲーム中に登場するオブジェクトには
みんなみ~んなレイヤーを設定してあげないといけないということもお忘れなく!

…ちょっとめんどくせーっと思ったかもしれませんが、
変数と組み合わせてやれば簡単に実装できるので是非やってみましょう!

まずは変数の宣言からです。

private int レイヤー01タイル用		= 1;
private int レイヤー02アイテム用 = 2;
private int レイヤー03敵キャラ用 = 3;
private int レイヤー04プレイヤー用 = 4;
private int レイヤー05アイコン用 = 5;
private int レイヤー06テキスト用 = 6;
private int レイヤー07デバッグ用 = 7;

(懲りずに日本語変数ですね^^;ハイ…)
これを見てもう分かったと思いますが、一つ一つのオブジェクトに優先順位を設定するのではなく、
タイルセットのレイヤーや敵キャラセットのレイヤーなど複数のジャンルに絞込むとかなり楽チンです。

setZIndexメソッドは中の設定値が高いほど手前に表示される仕組みで、この設定値で行くと…、
「(設定無し)<タイル<アイテム<敵キャラ<マリオ<…」の優先順位でオブジェクトが表示されるようになります。

「(設定無し)」というのはオブジェクトの生成時に"setZIndexメソッド"を付けなかったときの場合です。
この場合は自動的に一番最下層のレイヤーとして表示されます。
ちなみに、大体の2Dゲームではこの順番で成り立っているので、
オブジェクトの優先順位に迷ったらとりあえずはこちらの値を指定してみてくださいね。

ではいよいよsetZIndexメソッドの登場です。

playerMario = getBaseActivity().getResourceUtil()
.getAnimatedSprite("player_01_mario_set_1.png", 1, 30);
playerMario.setPosition(64, 480);
attachChild(playerMario);
// ここでレイヤーの設定をする
playerMario.setZIndex(レイヤー04プレイヤー用);
sortChildren();

コードの6行目にやっとsetZIndexメソッドが登場しましたね。
特に解説することはありませんが、setZIndexメソッドは必ずオブジェクトの画像を読み込んでから設定してくださいね。
それとsetZIndexメソッドを使う場合は7行目のsortChildrenメソッドも必要になるみたいなので、
この2つをセットで宣言するのをお忘れなく!

ちなみに、この"setZIndexメソッド"を使ってレイヤーを設定してやらないと、
いったいどのように表示されるのかというと…。
Andengineでは自動的に"一番最後に生成したオブジェクトが手前にくるよう"設定されているので、
新たにオブジェクトが生み出されるたびに手前に来るなどやりたい放題になります。
(「画面スクロールによって新たに生成された草ではマリオよりも手前される」というのはその為。)
よって、一つの画面内で遊ぶ簡単なゲームではいちいちレイヤーを設定する必要はありませんので、
時と場合によって使い分けてみてください。

解説は以上です!多忙な時期なので年内最後の更新かもしれませんが、またちょくちょくと見に来てくださいね。
それでは、来年もよろしくお願いします。

Screenshot_2014-12-14-22-50-59.png
スポンサーサイト

コメント

非公開コメント

プロフィール

岡本 賢治

Author:岡本 賢治
 
☆☆☆☆☆☆☆☆☆☆☆☆
 
Android専用アクションゲーム
「スーパーけんじラン」好評配信中!
 
↓↓↓↓↓↓↓↓↓↓↓↓

 
・公式サイトはこちらから
http://okamotodo.jimdo.com/

最新トラックバック

アクセスカウンター

オンラインカウンター

現在の閲覧者数:

検索フォーム

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。