グルチャ

enchant.js用プラグイン exntendMapについて解説する

enchantMapEditorでマップ拡張を有効にして吐き出したコードはenchant.js用プラグインexntendMap (ExMap)で読み込む必要がある。

以下がExMapの使い方である。

window.onload = function() {
	var core = new Core(320, 320);
	core.preload('map0.gif');
	core.onload = function() {
		var backgroundMap = new ExMap(16, 16);
		backgroundMap.image = core.assets['map0.gif'];
		backgroundMap.loadData([
		    [39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39],
		    //...マップデータの定義
		    [107,107,107,38,4,22,22,22,22,23,107,107,107,107,107,107,107,107,107,107]
		]);
		backgroundMap.collisionData = [
		    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
		    //...当り判定の定義
		    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
		];
		core.rootScene.addChild(backgroundMap);
	}
}

map0
(上の画像がmap0.gif)

このコードでマップデータで定義されたマップが画面に表示される。
ここで疑問なのは、マップデータの39や107などの数字は何を示しているのか?
この数字はマップのチップ番号を示していて、左上を0として右へ16ドット単位で0,1,2,3と連番を振り一番右まで行ったら改行して、さらに2行目3行目・・・と連番を振ったものだ。
だた、読み込んだ画像ファイル(map0.gif)そのものを使っているのではなく、加工を加えた画像を使っている。

		backgroundMap.image = core.assets['map0.gif'];

imageプロパティ内で、加工を加えている。
exmap0
上の画像が加工を加えた結果だ。

この加工のルールは、
元の画像ファイルのうち、左側の縦横96×256をマップのフィールド画像と仮定して、
さらに48×60の単位でフィールドのタイプとして仮定して、
それぞれの他のフィールドとの境界線のバリエーションを生成している。
この加工された画像は縦横サイズ276×512に拡張されている。
よって、チップ番号は0~551までの連番になる。
要は元の画像を元にしたチップ番号ではなく、加工した画像を元にしたチップ番号であることに注意すること。

また、このフィールドのタイプ知ることもできる。

	var type = backgroundMap._typeData[0][0];

上記は座標(0,0)のタイプを取得するコードだ。
最初のマップデータの例では、typeには0が入ってくる。
typeの数字はマップのフィールドのうち、左上から1行目1列目を0、1行目2列目を1、2行目1列目を2・・・4行目2列目を7とした0~7までの数字である。
map0_no


Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Time limit is exhausted. Please reload CAPTCHA.