そんなわけで(どんなわけで)、PICO-8 v0.2.1bを触っているのでメモ。
まずは、AUTOMATONの記事に沿ってやっている。
前回の記事:
PICO-8を使ってみる - もふぐらみんぐ
AUTOMATONの連載記事は4年前のもので未完ぽいが、貴重な日本語チュートリアルなのでありがたく読ませていただく。
今回読んだのは下記3つの記事。これだけでキャラクターに画面上を歩き回らせることができるのでちょっと楽しい。
プログラムで絵を描こう - PICO–8ゲーム開発入門(2) | AUTOMATON
アニメーションを作ろう - PICO-8ゲーム開発入門(3) | AUTOMATON
コントローラーを使おう - PICO-8ゲーム開発入門(4) | AUTOMATON
出来上がったのがこれ↓。歩いているのはあつあげというオリジナルキャラクター。上下左右キーで動かせる。
以下はメモ。
function _init()
は最初に呼ばれる。
function _update()
は繰り返し呼ばれるゲームループ。30fps。
(function _update60()なら60fps。)
function _draw()
は描画用関数。30fps。
(※処理が間に合わない場合は15fpsになる。)
PICO-8座標系:
左上が(0,0)、右下が(127,127)
PICO-8の色:
カラーパレットの左上0~15
API早見表の「描画」タブの図を見ると分かりやすい。
0 black 1 dark_blue 2 dark_purple 3 dark_green
4 brown 5 dark_gray 6 light_gray 7 white
8 red 9 orange 10 yellow 11 green
12 blue 13 indigo 14 pink 15 peach
基本的な描画関数
(c: 描画色は省略可能で省略した場合は0: 黒になる。)
点を打つ:
pset(x, y, c)
線を引く:
line(x0, y0, x1, y1, c)
円を描く:
circ(x, y, r, c)
circfill(x, y, r, c)
矩形を描く:
rect(x0, y0, x1, y1, c)
rectfill(x0, y0, x1, y1, c)
スプライトを描画する:
spr(n, x, y)
n: スプライト番号
x: 左上のX座標
y: 左上のY座標
スプライトのデフォルト透過色は0: 黒だが、palt()で変更できる。
この辺りを手掛かりにして公式マニュアルを見る。
Luaのif文:
if 条件式 then
……
end
1行に収めてもOK。
if 条件式 then …… end
条件式の否定はnot。
if not hoge then …… end
PICO-8の入力:
PICO-8は十字キーと2ボタンのある空想上のゲーム機である。
API早見表の「入力」タブの図を見ると分かりやすい。
btn(i, p)
・i: ボタンに割り振られた番号 (0~5)(省略時は12個のボタンのビットフィールドを返す)
・p: プレイヤー番号 (0~7) (省略時0)
・返り値: ボタンが押されている : true/ 押されていない : false
0: 左ボタン
1: 右ボタン
2: 上ボタン
3: 下ボタン
4: 〇ボタン
5: ×ボタン
数値でなく、ボタンのグリフ(Shift+l/r/u/d/o/x)でも可能。つまり下図のようにできる。
※グリフは他のエディタで開くと文字化けしてしまう(unicode相当らしいのだが)。
入力されたタイミングを取得したいときはbtnp()を使う。(15フレーム押され続けると4フレーム毎にtrueを返すようになる。)
スプライトのアニメーション
記事ではフレームカウントをアニメーションさせたいスピードで除算した余りで制御していた。他の方法も色々ありそう。
FUNCTION _UPDATE()
T+=1
IF T%4==0 THEN
S+=1
IF S>4 THEN
S=2
END
END
END
※はてなブログの引用の都合上、全角スペースを使用している
- 発売日: 2019/05/24
- メディア: Kindle版
Programming in Lua プログラミング言語Lua公式解説書
- 作者:Roberto Ierusalimschy
- 発売日: 2009/08/28
- メディア: 大型本
スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)
- 作者:浜中 誠
- 発売日: 2010/09/30
- メディア: 大型本