引き続き tmlib の件

ここ何日か続けて tmlib でアクションゲームを作っていました。
その中で気付いた件を列挙しておきたいと思います。

・描画にマイナスの座標が使える
これは大変助かります。表示したいマップ部分の左上を (0,0) にしたい時に、マイナス座標が使えないと、そのための処理を場合分けとして作らないといけません。
でも、tmlib ではマイナス座標にも描けるのでマップに縁取りをしたい時でも直感のままにコーディングできます。

・マップスプライトでのスクロール
この機能は非常に便利です。マップ内に表示したいエレメントを MapSprite に addChildTo() しておけば、あとは MapSprite の setPosition() に引数を与えて呼び出すだけです。

与える引数は少しややこしいですが「マップ中の表示したい部分の左上座標にマイナスをかけたもの」です。
まあ、日本語の文だと分かりにくいので例を出します。
マップ中の表示したい領域が「左上(x,y)でサイズ(w,h)」とします。この場合の引数は「(-x,-y)」です。
チップサイズが 32×32 で右に1マス、下に2マスだけずれた表示をしたければ、マップ上の左上座標が「(32, 64)」なので、引数は「(-32, -64)」ですね。

つまり、マップの左上の端をどれだけ左上に移動させるかという話なのですが、私のようにマップ内の座標で表示位置を考えると、上のように分かりにくくなるという話でした。

・マップスプライトではチップの表示/非表示を切り替えられない
どうやらマップ関係のクラスは「(RPGなどの)背景としてのマップ」を扱うようで、チップ単位での表示制御がありませんでした。
今回のアクションゲームのステージマップとしては、壁や敵などを置いて動かしたり消したりするので、そのままでは利用できません。
とは言え、データとして利用する分には便利なので、レイヤを非表示にして保存しておき、ラッパークラスを使って Sprite で表示させるようにしました。
スクロールなどの機能はそのまま使えるので便利です。

それにしても、ホントに機能豊富なライブラリですね。作者様に感謝感謝です。