PICO-8を使ってみる3

引き続き、PICO-8 v0.2.1bを触っているのでメモ。

今までの記事:

  1. PICO-8を使ってみる - もふぐらみんぐ
  2. PICO-8を使ってみる2 - もふぐらみんぐ

引き続きAUTOMATONの連載記事を読んでいる。
今回読んだのは第6回と第7回。第5回(3Dグラフィクス)は飛ばしている。
効果音を鳴らそう - PICO-8ゲーム開発入門(6) | AUTOMATON
人と物のふれあい……衝突判定 – PICO-8ゲーム開発入門(7) | AUTOMATON
ここまでやればあつあげが焼き鳥を拾えるようになっている。実際は効果音も鳴らしている。
PICO-8 あつあげが焼き鳥を拾う
移動に目的ができたので動かしていて楽しくなってきた。

以下はメモ。

export("hoge.wav") で作成した音をwavファイルとして出力できる。
出力先はPICO-8のカレントディレクトリなので、folderコマンドで開くとよい。
exportは他にもpngとhtml(+js)が出力できる。
htmlにすればそのままウェブ上で遊べる形になる。とてもよい。
あとは気楽に公開する方法があれば完璧なのだが……。

衝突判定

衝突判定のアルゴリズムは色々あると思うが、AUTOMATONの記事では2点間距離を算出して使用していた。

function distance(x1,y1,x2,y2)
 return sqrt((x1-x2)^2+(y1-y2)^2)
end

function collision(x1,y1,x2,y2)
 if distance(x1,y1,x2,y2) < 4 then
  return true
 else
  return false
 end
end

はてなブログの引用の都合上、全角スペースを使用している

数学関数

rnd(x)
0以上x未満のランダムな数を返す。整数が欲しい場合はflr(rnd(x))を使うとよい(が、PICO-8は座標に整数を与えなくても問題無い)。
xが配列形式のテーブルの場合は、テーブルの中のランダムな要素を返す。

flr(x)とceil(x)がある。
flr(x)はx以下の最も近い整数、ceilはx以上の最も近い整数を返す。

システム関数

time() / t()
AUTOMATONのサンプルコードではフレームカウンタ変数として使われていたが、現行バージョンではそもそもカートリッジが起動してからの経過時間を返すシステム関数だった。
_update()または_update60()で算出されるため、同一フレームで呼び出した場合は同一の値となる。

Luaのテーブル

Luaには配列が無いそうだ。代わりにテーブルで配列のような数字のキーと文字列のキーが使える。

a={} -- テーブルを初期化
a[1] = 4 -- テーブルの1番に値4を入れる
a[2] = 3 -- テーブルの2番に値3を入れる
a[3] = "aiueo" -- テーブルの3番に値"aiueo"を入れる
a["fruit"] = "pineapple" -- テーブルのfruit要素に値"pineapple"を入れる
a.animal = "panda" -- テーブルのanimal要素に値"panda"を入れる
print(a[1]) -- テーブルaの1番の要素を表示
print(a[2]) -- テーブルaの2番の要素を表示
print(a[3]) -- テーブルaの3番の要素を表示
print(a["fruit"]) -- テーブルaのfruit要素のを表示
print(a.animal) -- テーブルaのanimal要素を表示

a={x=3, y=4, fruit=“banana”} -- keyとvalueを複数まとめて設定

添え字は1始まりらしい。a.1のように添え字を指定することはできない。
テーブルにテーブルを入れることもできる。

Luaのforループ

forループは、Luaではこのように書く。

for i=1,5 do
 print(i)
end

↑の場合、1ループごとのiの増分は1。
↓のようにすれば、iの増分は8になる。

for i=0,120,8 do
 print(i)
end

日経ソフトウエア 2019年7月号 [雑誌]

日経ソフトウエア 2019年7月号 [雑誌]

  • 発売日: 2019/05/24
  • メディア: Kindle