PicoPicoGameEngine

Quick Links

タイルマップオブジェクト

タイルマップオブジェクトはタイルマップを扱うオブジェクトです。

TMXファイルに対応しています。

ppmap

ppspriteのサブクラスです。

.new()

タイルマップオブジェクトを作成します。

引数nを指定すると指定した数だけタイルマップオブジェクトが入ったテーブルを返します。

map = ppmap.new()
map_array = ppmap.new(n)
map : ppmap object

タイルマップオブジェクト

n : number

生成するタイルマップオブジェクトの数

map_array : object

タイルマップオブジェクトの配列

:load()

TMXファイルを読み込みます。

DotEDITORではマップデータとして設定したファイルと、現在編集中のマップデータを current.tmxというファイル名で読み込むことができます。 テクスチャの指定がある場合は自動的に読み込まれます。読み込みできるテキスチャは1つだけです。

map:load(tmx_filename,[texture_option])
map : ppmap object

タイルマップオブジェクト

tmx_filename : string

TMXファイル名

[texture_option] : object/optional

テクスチャオプション

TMXファイルにテクスチャの指定がある場合は、そのテクスチャを読み込みます。その読み込むテクスチャのオプションをここで指定できます。

map = ppmap.new()
map:load("map1.tmx")
function start()
  map:draw()
end

:clip()

描画するエリアを指定します。

マップの一部だけを切り取って描画することができます。

マップサイズよりも大きなエリアを指定することもできます。大きなエリアを指定した場合は繰り返し表示になります。

※ 旧APIの area() メソッドと同じ。area()メソッドも使えます。

map:clip(x,y,width,height)
map:clip({x,y,width,height})
map:clip(area)
area = map:clip()
map : ppmap object

タイルマップオブジェクト

x : number

表示するタイル開始X座標 (タイル単位)

y : number

表示するタイル開始Y座標 (タイル単位)

width : number

表示するタイルの横幅 (タイル単位)

height : number

表示するタイルの高さ (タイル単位)

area : rectangle object

描画するエリア (タイル単位)

map = ppmap.new()
map:load("map1.tmx")
map:clip(2,2,8,12)
function start()
  map:draw()
end

:reset()

マップデータを初期化します。

map:reset()
map : ppmap object

タイルマップオブジェクト

:layerList()

管理しているレイヤー名の一覧を文字列の配列テーブルで返します。

list = map:layerList()
map : ppmap object

タイルマップオブジェクト

list : string object array

レイヤー名の配列テーブル

:addLayer()

レイヤーを追加します。

同名のレイヤーがすでにあった場合はリサイズします。

map:addLayer(name,width,height)
map:addLayer(name,{width,height})
map:addLayer(name,size)
map : ppmap object

タイルマップオブジェクト

name : string

レイヤー名

width : number

レイヤーの横幅 (タイル単位)

height : number

レイヤーの高さ (タイル単位)

size : rectangle object

レイヤーのサイズ (タイル単位)

:tileset()

TMXファイル内のtilesetをテーブルで返します。

tileset = map:tileset()
map : ppmap object

タイルマップオブジェクト

tileset : object

タイルセットのテーブル

map = ppmap.new()
map:load("map1.tmx")

function start()
  map:draw()
  local t=map:tileset()
  for k,v in pairs(t) do
    ppgraph:print(
      v.firstgid..","..
      v.name..","..
      v.tilewidth..","..
      v.tileheight)
    ppgraph:move(0,16)
  end
end

:layer()

カレントレイヤーを選択します。

DotEDITORではlayer1とlayer2の2つを指定できます。

引数を省略した場合は、カレントレイヤーのレイヤー番号を返します。

map:layer(name)
layer = map:layer()
map : ppmap object

タイルマップオブジェクト

name : string

カレントレイヤーにするレイヤー名

layer : number

カレントレイヤーのレイヤー番号

:show()

レイヤー番号を指定してレイヤーを表示状態にします。

layerを省略した場合はマップ全体を表示状態にします。

map:show()
map:show(layer)
map : ppmap object

タイルマップオブジェクト

layer : number

レイヤー番号

map = ppmap.new()
map:load("map1.tmx")

map:layer("layer2")
map:hide(map:layer())

map:layer("layer1")
map:show(map:layer())

function start()
  map:draw()
end

:hide()

レイヤー番号を指定してレイヤーを非表示状態にします。

layerを省略した場合はマップ全体を非表示状態にします。

map:hide()
map:hide(layer)
map : ppmap object

タイルマップオブジェクト

layer : number

レイヤー番号

:locate()

参照する位置を変更します。

tile()やtile(gid)とともに使用します。

map:locate(x,y)
map:locate({x,y})
map:locate(pos)
pos = map:locate()
map : ppmap object

タイルマップオブジェクト

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

pos : point object

座標 (タイル単位)

:tile()

選択レイヤーの指定した位置のタイル番号を返します。

引数を省略した場合はlocate()メソッドで指定した位置のタイル番号を返します。

tile = map:tile()
tile = map:tile(x,y)
tile = map:tile({x,y})
tile = map:tile(pos)
map : ppmap object

タイルマップオブジェクト

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

pos : point object

座標 (タイル単位)

tile : number

タイル番号

map = ppmap.new()
map:load("map1.tmx")
map:layer("layer2")
function start()
  map:draw()
  local p = pptouch()[1]
  if p==nil then
    p=pppoint(0,0)
  end
  ppgraph:print(
    map:tile(p/32))
end

:tile()

選択レイヤーの指定した位置にタイル番号を設定します。

座標を省略した場合はlocate()メソッドで指定した位置にタイル番号を設定します。

map:tile(tile)
map:tile(x,y,tile)
map:tile({x,y},tile)
map:tile(pos,tile)
map : ppmap object

タイルマップオブジェクト

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

pos : point object

座標 (タイル単位)

tile : number

タイル番号

map = ppmap.new()
map:load("map1.tmx")
map:layer("layer2")
function start()
  map:draw()
  local p = pptouch()[1]
  if p~=nil then
    map:tile(p/32,5)
  end
end

:clear()

選択レイヤーを指定したタイル番号で塗りつぶします。

tileを省略すると0で塗りつぶします。

map:clear()
map:clear(tile)
map : ppmap object

タイルマップオブジェクト

tile : number

塗りつぶすタイル番号

:mapSize()

選択レイヤーのマップサイズを変更します。

引数がない場合はマップサイズを返します。

map:mapSize(width,height)
map:mapSize({width,height})
map:mapSize(size)
size = map:mapSize()
map : ppmap object

タイルマップオブジェクト

width : number

横幅 (タイル単位)

height : number

縦幅 (タイル単位)

size : rectangle object

サイズ (タイル単位)

:print()

選択レイヤーにテキストVRAMと同様の使い方で文字やキャラクタを表示します。

表示位置は locate() を使用します。

map:print(string)
map : ppmap object

タイルマップオブジェクト

string : string

文字列 英数、アルファベットのみ

map = ppmap.new()
map:load("map1.tmx")

--change texture
map:texture(
  ppfont:texture())
map:tileSize(8,8)
map:scale(2)

--clear layer2
map:layer("layer2")
map:clear()

--clear layer1
map:layer("layer1")
map:clear()

--change layer1 size
map:mapSize(20,20)
map:area(0,0,20,20)

--print HELLO WORLD
map:locate(1,1)
map:print("HELLO WORLD")

function start()
  map:draw()
end

:fill()

選択レイヤーにtileで指定したタイル番号で矩形に塗りつぶします。

map:fill(x,y,width,height,tile)
map:fill({x,y,width,height},tile)
map:fill(rect,tile)
map : ppmap object

タイルマップオブジェクト

tile : number

タイル番号

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

width : number

横幅 (タイル単位)

height : number

高さ (タイル単位)

rect : rectangle object

塗りつぶす矩形領域 (タイル単位)

:box()

選択レイヤーにtileで指定したタイル番号で矩形を描きます。

map:box(x,y,width,height,tile)
map:box({x,y,width,height},tile)
map:box(rect,tile)
map : ppmap object

タイルマップオブジェクト

tile : number

タイル番号

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

width : number

横幅 (タイル単位)

height : number

高さ (タイル単位)

rect : rectangle object

矩形領域 (タイル単位)

:circle()

選択レイヤーにtileで指定したタイル番号で円を描きます。

:circle(x,y,r,tile,[start],[end])
:circle({x,y},r,tile,[start],[end])
:circle(pos,r,tile,[start],[end])
map : ppmap object

タイルマップオブジェクト

tile : number

タイル番号

x : number

中心X座標 (タイル単位)

y : number

中心Y座標 (タイル単位)

pos : point object

中心座標 (タイル単位)

r : number

半径

[start] : number/optional

開始角度 ラジアン

[end] : number/optional

終了角度 ラジアン

:line()

選択レイヤーにtileで指定したタイル番号で線を描きます。

map:line(x1,y1,x2,y2,tile)
map:line({x1,y1},{x2,y2},tile)
map:line(pos1,pos2,tile)
map : ppmap object

タイルマップオブジェクト

tile : number

タイル番号

x1 : number

始点X座標 (タイル単位)

y1 : number

始点Y座標 (タイル単位)

x2 : number

終点X座標 (タイル単位)

y2 : number

終点Y座標 (タイル単位)

pos1 : point object

始点 (タイル単位)

pos2 : point object

終点 (タイル単位)

:paint()

選択レイヤーにtileで指定したタイル番号で塗りつぶします。

map:paint(x,y,tile)
map:paint({x,y},tile)
map:paint(pos,tile)
map : ppmap object

タイルマップオブジェクト

tile : number

タイル番号

x : number

X座標 (タイル単位)

y : number

Y座標 (タイル単位)

pos : point object

座標 (タイル単位)

:swap()

選択レイヤーのtile1とtile2を入れ替えます。

map:swap(tile1,tile2)
map : ppmap object

タイルマップオブジェクト

tile1 : number

入れ換えるタイル番号

tile2 : number

入れ換えるタイル番号

:scroll()

選択レイヤーのタイルを指定した方向にスクロールさせます。

map:scroll(dx,dy)
map:scroll({dx,dy})
map:scroll(delta)
map : ppmap object

タイルマップオブジェクト

dx : number

X方向移動量 (タイル単位)

dy : number

Y方向移動量 (タイル単位)

delta : point object

移動量 (タイル単位)

map = ppmap.new()
map:load("map1.tmx")
map:layer("layer1")
map:scroll(0,6)
map:layer("layer2")
map:scroll(0,6)
function start()
  map:draw()
end

:copy()

選択レイヤーの指定位置のタイルをコピーします。

map:copy(x,y,width,height,{dst_x,dst_y}})
map:copy({x,y,width,height},{dst_x,dst_y})
map:copy(rect,{dst_x,dst_y})
map : ppmap object

タイルマップオブジェクト

x : number

コピー元のX座標 (タイル単位)

y : number

コピー元のY座標 (タイル単位)

width : number

コピー元の横幅 (タイル単位)

height : number

コピー元の高さ (タイル単位)

rect : rectangle object

コピー元の矩形領域 (タイル単位)

dst_x : number

コピー先のX座標 (タイル単位)

dst_y : number

コピー先のY座標 (タイル単位)

:attribute()

描画タイルのアトリビュートを変更します。

map:attribute(attr)
map : ppmap object

タイルマップオブジェクト

attr : object

タイルの属性

{
  hflip=[水平反転 boolean],
  vflip=[垂直反転 boolean],
  rotate90=[90回転  0〜3 反時計回り],
  color=[色 color object]}
map = ppmap.new()
map:load("map1.tmx")
map:layer("layer1")
map:attribute({rotate90=3})
local w=map:mapSize().width
local h=map:mapSize().height
for y=0,h-1 do
  for x=0,w-1 do
    map:locate(x,y)
    local t=map:tile()
    map:tile(t)
  end
end
function start()
  map:draw()
end

:resetAttribute()

描画タイルのアトリビュートを初期化します。

map:resetAttribute()
map : ppmap object

タイルマップオブジェクト

:check()

DotEDITORで

ti=require("tileinfo")

の一行を加える事で使用できるようになります。
主にBGとのキャラクタの当たり判定用に使用します。
tileが{char_a,char_b,...}の仲間かどうかを調べます。

result = map:check( tile, tile_array)

tileがtile_arrayの中にある仲間かどうか調べます。

map : ppmap object

タイルマップオブジェクト

tile_array : object

調べるタイル番号の配列

result : boolean

仲間かどうか

  • true 仲間である
  • false 仲間でない
result = map:check( tile, char_from, char_to)

tileがchar_fromからchar_toの間にある仲間かどうか調べます。

map : ppmap object

タイルマップオブジェクト

char_from : number

開始番号

char_to : number

終了番号

result : boolean

仲間かどうか

  • true 仲間である
  • false 仲間でない

:mapInfo()

DotEDITORで

ti=require("tileinfo")

の一行を加える事で使用できるようになります。
主にBGとキャラクタの当たり判定用に使用します。
キャラクタ情報を管理してるテーブルを返します。

map:mapInfo(mapInfoObject)
mapInfo = map:mapInfo()
map : ppmap object

タイルマップオブジェクト

:objectGroupList()

group_name_array = map:objectGroupList()
group_name_array : string object array

TMXファイルに含まれている objectgroup の group 名の配列を返す。

:objectList()

object_info_array = map:objectList(group_name)
group_name : string

グループ名

object_info_array : map object info array

オブジェクト情報の配列、各オブジェクトは以下のプロパティを持つ

  • x
  • y
  • width
  • height
  • name
  • type
  • gid

:objectInfo()

object_info = map:objectInfo(group_name,index)
group_name : string

グループ名

index : number

インデックス番号

object_info : map object info

オブジェクトの情報、以下のプロパティを持つ

  • x
  • y
  • width
  • height
  • name
  • type
  • gid

:objectIndex()

index = map:objectIndex(group_name,object_name)
index : number

インデックス番号

group_name : string

グループ名

object_name : string

オブジェクト名