PicoPicoGameEngine

Quick Links

その他の関数や定義

その他の関数/定義

pphitcheck()

2つのオブジェクトグループ(テーブル)の当たり判定を行います。 各オブジェクトは以下の組み合わせのプロパティを持つ必要があります。

距離判定の場合

{
  x=[X座標],
  y=[Y座標],
  hitmask=[当たり判定マスク],
  hitlength=[当たり判定距離],
  hitcenter=[当たり判定の中心座標 ポイントオブジェクト]
}

矩形判定の場合

{
  x=[X座標],
  y=[Y座標],
  hitmask=[当たり判定マスク],
  hitrect=[当たり判定矩形 矩形オブジェクト]
}
pphitcheck( a_group, b_group, function(a,b) ... end)
a_group : object

グループA

b_group : object

グループB

a : object

接触したグループAのオブジェクト

b : object

接触したグループBのオブジェクト

--use length check
pptex:default(
  pptex:load("sample.png"))
rand=math.random
c = pppoint(16,16)
g = ppgraph

enemy = ppsprite.new(10)
for k,v in pairs(enemy) do
  v.x = rand(0,10)*32
  v.y = rand(0,10)*32
  v.hitmask = 1
  v.hitlength = 8
  v.hitcenter = c
  v:tile(3)
  ppgraph:append(v)
end

player = ppsprite.new()
p = player
p.x = 100
p.y = 100
p.hitmask = 1
p.hitlength = 8
p.hitcenter = c
p:tile(2)
ppgraph:append(p)

function start()
  player:drag(pptouch())
  pphitcheck(
    enemy,
    {player},
    function(a,b)
      g:print("HIT!")
    end
  )
end
--use rectangle check
pptex:default(
  pptex:load("sample.png"))
rand=math.random
r = pprect(0,0,32,32)
g = ppgraph

enemy = ppsprite.new(10)
for k,v in pairs(enemy) do
  v.x = rand(0,10)*32
  v.y = rand(0,10)*32
  v.hitmask = 1
  v.hitrect = r
  v:tile(3)
  ppgraph:append(v)
end

player = ppsprite.new()
p = player
p.x = 100
p.y = 100
p.hitmask = 1
p.hitrect = r
p:tile(2)
ppgraph:append(p)

function start()
  player:drag(pptouch())
  pphitcheck(
    enemy,
    {player},
    function(a,b)
      g:print("HIT!")
    end
  )
end

ppforeach()

配列テーブルをイテレートします。

※for ipairs文と同様です。

ppforeach( array, function(index,value) ... end)
array : object

配列

index : number

インデックス

value : object

オブジェクト

pplength()

2点間の距離を計算します。

len = pplength(point1,point2)
point1 : point object

頂点1

point2 : point object

頂点2

len : number

距離

pptouch()

タッチ位置を{x=X座標,y=Y座標}の配列で返します。

touch = pptouch()
touch : object

タッチ位置のポイントオブジェクトの配列

g=ppgraph
function start()
  t=pptouch()
  for k,v in pairs(t) do
    g:print(
      k..":"..
      "X="..v.x..
      ",Y="..v.y)
    g:move(0,16)
  end
end

point object

2次元座標を表します。

pppointオブジェクトはこの定義に従います。

position={
  x=[X座標],
  y=[Y座標]
}

rectangle object

2次元矩形を表します。

pprectオブジェクトはこの定義に従います。

rect={
  x=[X座標],
  y=[Y座標],
  width=[横幅],
  height=[高さ]
}

color object

色を表します。

color={
  r=[赤 0 〜 255],
  g=[緑 0 〜 255],
  b=[青 0 〜 255],
  a=[透明度 0 〜 255],
}