アットウィキロゴ

加速度センサー

Playdateに搭載されている加速度センサーは、本体の傾きや動き、振動を検知できる「3軸加速度センサー」です。
本体を傾けたり、振ったりする動作をゲーム操作に取り入れることができ、playdate.readAccelerometer()を使って、X・Y・Z軸の傾き具合を0〜1の範囲で取得できます。


概要

Playdateには、本体の傾きや動きを検知するための3軸加速度センサー(Accelerometer)が搭載されています。クランクと並んで、直感的な操作を実現するための重要な入力デバイスです。
項目 内容
軸数 3軸 (X, Y, Z)
取得値 重力加速度 (g:単位)
ジャイロ 非搭載 (傾きは重力方向から算出)
主な用途 傾き操作、シェイク検知、重力方向の判定
1. 基本仕様
Playdateの加速度センサーは、デバイスが受ける加速度(重力加速度を含む)をX、Y、Zの3方向で測定します。
センサー種類
3軸加速度センサー(ジャイロセンサーは非搭載)
感度
通常、-2.0 から +2.0(単位は g:重力加速度)の範囲を計測します
静止時の値
平らな場所に置いた場合、垂直方向(Z軸)に約 1.0g の重力がかかります

2. 座標系の定義
Playdateを正面から見た際の軸の向きは以下の通りです。
X軸
左右方向。右に傾けるとプラス(+1)、左に傾けるとマイナス(-1)
Y軸
上下方向。下を向けるとプラス(+1)、上を向けるとマイナス(-1)
Z軸
前後(画面の厚み)方向。画面を上に向けた水平状態でマイナス(-1)

3. APIでの利用方法 (Lua)
加速度センサーはバッテリー消費を抑えるため、デフォルトでは無効になっています。使用するにはplaydate.startAccelerometer()で明示的に開始する必要があります。
---------------
-- 加速度の取得
---------------
-- センサーの開始
playdate.startAccelerometer()
 
function playdate.update()
    -- 現在のx, y, z値を取得
    local x, y, z = playdate.getAcceleration()
 
    -- 傾きに応じた処理(例:自機の移動)
    player.x += x * 10
end
 

値が変化したときだけ処理を行うコールバック関数を設定することも可能です。
-- コールバック形式
playdate.accelerometer.addCallback(function(x, y, z)
    -- 値が更新された際の処理
end)
 

4. 開発におけるテクニックと注意点
ジャイロセンサーの不在
Playdateにはジャイロセンサーがないため、「回転角(角度)」を正確に検知するのは苦手です。
加速度センサーだけで傾きを取得する場合、激しい動き(手ブレなど)がノイズとして混じりやすいため、ローパスフィルタ(平滑化)を適用して数値を安定させるのが一般的です。
「シェイク(振る)」の検知
一定以上の加速度の変化を監視することで、デバイスを振る動作を検知できます。
重力ベクトルと傾き
デバイスが静止しているときの重力ベクトルの向きを計算することで、デバイスが現在「どちらが下か」を判別できます。
バッテリー負荷
センサーを常に動かし続けるとバッテリーを消費するため、不要なシーン(メニュー画面など)では playdate.stopAccelerometer() で停止させることが推奨されます。

関連ページ

最終更新:2026年04月28日 22:06