LoginSignup
0
0

More than 1 year has passed since last update.

【Playdate】加速度センサーを使ってSpriteを動かす

Posted at

sample_1211.gif
Playdateには加速度センサーもついています。
今回は加速度センサーを使ったサンプルを作成してみました。
ベースとなるプロジェクトはこちら

main.lua
import "CoreLibs/object"
import "CoreLibs/graphics"
import "CoreLibs/sprites"
import "CoreLibs/timer"

local gfx <const> = playdate.graphics

local playerSprite = nil
local status = "ACCELEROMETER\nOFF"

function myGameSetUp()

	local playerImage = gfx.image.new("Images/playerImage")
	assert( playerImage )

	playerSprite = gfx.sprite.new( playerImage )
	playerSprite:moveTo( 200, 120 )
	playerSprite:add()

	local backgroundImage = gfx.image.new( "Images/background" )
	assert( backgroundImage )

	gfx.sprite.setBackgroundDrawingCallback(
		function( x, y, width, height )
			backgroundImage:draw( 0, 0 )
			
			gfx.setImageDrawMode(gfx.kDrawModeFillWhite)
			gfx.drawText(status, 20, 20)
			gfx.setImageDrawMode(gfx.kDrawModeCopy)
		end
	)

end

myGameSetUp()

function playdate.update()
    -- Aボタン: 加速度センサーをON/OFF
	if playdate.buttonJustReleased( playdate.kButtonA ) then
		if playdate.accelerometerIsRunning() ~= true then
			playdate.startAccelerometer()
			status = "ACCELEROMETER\nON"
			gfx.sprite.redrawBackground()
		else
			playdate.stopAccelerometer()
			status = "ACCELEROMETER\nOFF"
			gfx.sprite.redrawBackground()
		end
	end
	
    -- 加速度センサー
	if playdate.accelerometerIsRunning() == true then
		local x, y, z = playdate.readAccelerometer()
		playerSprite:moveBy( x, y )
	end

	gfx.sprite.update()
	playdate.timer.updateTimers()

end

加速度センサーはバッテリー節約のため、最初はオフにされています。
加速度センサーを開始するにはplaydate.startAccelerometer()で明示的にオンにする必要があります。
playdate.accelerometerIsRunning()で加速度センサーの有効無効状態をbooleanで取得します。
加速度センサーを終了するにはplaydate.stopAccelerometer()でオフできます。

加速度センサーによって傾きを取得するにはplaydate.readAccelerometer()を使います。
返り値はx``y``zとなり、0〜1の範囲で取得することができます。
端末の背中(スクリーンの裏側)を床に置くと(x,y,z)は(0,0,1)となり、端末を立てる(ロックボタンを上側にする)と(x,y,z)は(0,1,0)と値が返されます。
今回はxyをそのまま代入して、スプライトを動かしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0