2017/12/25(月) [n年前の日記]
#1 [love2d] love2d + stiライブラリでTiledデータのオブジェクト情報を取得その2
love2d と stiライブラリを使って、Tiled で作ったタイルマップデータからオブジェクトレイヤーの情報を取得して、敵を発生させる処理ができそうか試したり。
例えば、Tiled上で四角形のオブジェクトを以下のように配置すれば…。
こんな感じで、スクロールに合わせて敵が画面に出てくる、みたいな。
例えば、Tiled上で四角形のオブジェクトを以下のように配置すれば…。
こんな感じで、スクロールに合わせて敵が画面に出てくる、みたいな。
◎ 画像とソース。 :
使用画像とタイルマップデータは以下。License: CC0 / Public Domain ってことで。
_largecanon.png
_beam01_64x64.png
_block01.png
_tile01_b.png
_mecha_bg2_map_with_enemy.lua
_mecha_bg2_map_with_enemy.tmx
ソースは以下。
_conf.lua
_main.lua
動作には _stiライブラリ が必要。
_largecanon.png
_beam01_64x64.png
_block01.png
_tile01_b.png
_mecha_bg2_map_with_enemy.lua
_mecha_bg2_map_with_enemy.tmx
ソースは以下。
_conf.lua
_main.lua
動作には _stiライブラリ が必要。
◎ 少し説明。 :
Tiled 上で敵の配置をする際、オブジェクトにカスタムプロパティを追加して速度も指定していたり。
love2d側でカスタムプロパティがどう見えているかは…。 _mecha_bg2_map_with_enemy.lua を開いて最後のあたりを見れば、フツーに Lua のテーブルになってるので分かりやすいかなと。以下のような感じだけど。
rotation で角度を指定すれば良かったのでは、と思ったけど、x, y の位置を中心にして回転してしまうから、ちょっと都合が悪いのだな…。中心位置を別途指定できれば助かりそうだけど、それはそれで情報が増えちゃうからよろしくないであろう予感も。
今回、砲台からビームも撃たせてみたけれど。love2d は描画の優先順位を自由に指定できない・描画した順に上書きされていくので、ちょっと悩んだり。砲台の奥に描画できたら見た目はマシになるのだけど…。結局、発生位置を調整して誤魔化した。こんな時、DXRubyの、z値(描画優先順位)を指定可能な Sprite、てな仕様の便利さを再認識するというか。
love2d側でカスタムプロパティがどう見えているかは…。 _mecha_bg2_map_with_enemy.lua を開いて最後のあたりを見れば、フツーに Lua のテーブルになってるので分かりやすいかなと。以下のような感じだけど。
{ id = 26, name = "b", type = "180", shape = "rectangle", x = 384, y = 2336, width = 64, height = 64, rotation = 0, visible = true, properties = { ["speed"] = 128 } },ちなみに上記の例では、type には角度を入れてる。
rotation で角度を指定すれば良かったのでは、と思ったけど、x, y の位置を中心にして回転してしまうから、ちょっと都合が悪いのだな…。中心位置を別途指定できれば助かりそうだけど、それはそれで情報が増えちゃうからよろしくないであろう予感も。
今回、砲台からビームも撃たせてみたけれど。love2d は描画の優先順位を自由に指定できない・描画した順に上書きされていくので、ちょっと悩んだり。砲台の奥に描画できたら見た目はマシになるのだけど…。結局、発生位置を調整して誤魔化した。こんな時、DXRubyの、z値(描画優先順位)を指定可能な Sprite、てな仕様の便利さを再認識するというか。
[ ツッコむ ]
以上です。