PlaydateゲームをLuaで作る - キー入力・クランク操作を受け付ける
前提
できるだけ記事を短くするため説明は最小限です
この記事でスプライトを表示した続きです
環境はMac
コード
main.luaを下記のようにしてください
import "CoreLibs/graphics"
local gfx <const> = playdate.graphics -- "playdate.graphics" と書く代わりに "gfx" と書けるようにするためのもの
local spriteImage = gfx.image.new("sample_no_gazou") -- 画像をロードする。ファイル名に拡張子は書かなくて良い
assert(spriteImage, "Failed to load image") -- 画像のロードに失敗した場合はエラーを出してここで終了する。ファイル名指定を間違っていたらここでエラーになる
local sprite = gfx.sprite.new(spriteImage) -- 画像を元にスプライトを作成する
sprite:moveTo(100, 100) -- スプライトを移動する 引数は x, y 座標 左上が (0, 0) で右下に行くほど座標が大きくなる
sprite:setZIndex(1) -- スプライトのZインデックスを設定する。Zインデックスが大きいほど手前に表示される 数字は-256から256までの範囲で指定できる
sprite:add() -- スプライトを描画する
function playdate.update()
gfx.clear() -- 画面をクリアする
-- 上ボタンが押されたかどうかを判定する
if playdate.buttonIsPressed(playdate.kButtonUp) then
-- スプライトを上へ移動する 引数は x, y 座標 左上が (0, 0) で右下に行くほど座標が大きくなる
sprite:moveBy(0, -2)
elseif playdate.buttonIsPressed(playdate.kButtonDown) then -- 下ボタンが押されたかどうかを判定する
sprite:moveBy(0, 2) -- スプライトを下へ移動する
elseif playdate.buttonIsPressed(playdate.kButtonLeft) then -- 左ボタンが押されたかどうかを判定する
sprite:moveBy(-2, 0) -- スプライトを左へ移動する
elseif playdate.buttonIsPressed(playdate.kButtonRight) then -- 右ボタンが押されたかどうかを判定する
sprite:moveBy(2, 0) -- スプライトを右へ移動する
end
local crankPos = playdate.getCrankPosition() -- クランクの位置を取得する
-- スプライトを回転する 引数は回転角度 ここにクランクの位置を指定することでクランクの位置に応じてスプライトが回転する
sprite:setRotation(crankPos)
gfx.sprite:update() -- スプライトを更新する
end
すると以下のように、キー入力で動かしたり、クランク操作で回転させたりできます
moveByで指定している数値を大きくしたり小さくしたりすれば、移動速度も変えられます
終わり
絵が表示できて、キー入力が受け付けられて、それに応じて数字をこちょこちょ処理できたらゲームは作れます
頑張ってください
備考
buttonIsPressedについて
buttonIsPressedは「今、ボタンが押されているか」を判定する処理
これに対しbuttonJustPressedという「ボタンが押されたかどうか」を判定する処理もある
詳しくはこの辺に書いてある
スプライト関連の他の機能
この辺にいろいろ書いてあります