自作RPGのリリースに向けて開発を進めていきたいと思います。 まずは店風の背景を表示してみます。
使う素材は、BrowserQuestのtilesheet.pngです。
この画像は、32x32のタイルが縦に20個、横に98個並んだものです。 扱いやすくするためにそれぞれ番号を振ります。
せっかくなのでこれもSprite Kitでやります。
透過されている部分がわかりやすいようにSceneに背景色をつけています。
そして、tilesheet.pngからSKSpriteNodeを作成し、anchorPointを左下に設定してSceneに追加します。 そのままだと大きくて見づらいので、xScale・yScaleで調整しています。
その後、32px毎にSKLabelNodeで番号を表示していきます。 これで以下のような画面になります。
それでは、この番号を使ってマップを作成します。
まずは、マップデータです。 今回はCSVファイルで表現します。
あとはこれを読み込んで表示するだけです。
やっていることは単純でCSVを空行区切りでレイヤーにわけて、
あとは順番に、番号に合うタイルをtextureWithRect:inTexture:
使って表示しているだけです。
なお、-1
は何も表示しないという意味にしています。
これで以下のように表示できます。
ゲームに使うには、各タイルの通行可否フラグなど保持したりしないといけないので、 TileクラスやMapクラスが必要になってくると思います。
今日のところは表示するところまで。
ソースコードは、sj-prototype-apps/SJRolePlaying at master · tnantoka/sj-prototype-appsにあります。
rectの計算で割り切れないことなどが原因で、ノイズが出てしまうのが気になるところ。
解消できたらまた書きます。