アットウィキロゴ

クランク

Playdateのクランクは、本体側面に収納可能な黄色いアナログ回転コントローラーです。
ぐるぐると手で回すことで、従来のボタン操作では不可能な、精密かつ直感的な「アナログ的」なゲーム操作(時間を戻す、角度を変えるなど)を実現する、Playdateの象徴的な特徴です。


概要

1. ハードウェア特性
アナログ入力
360度無限に回転するアナログコントローラーです。
高精度センサ
内部的にはホール効果センサが使用されており、非常に滑らかで精密な回転角の取得が可能です。
収納式 (Docking)
クランクは本体横に収納できます。収納状態(Docked)か、引き出された状態(Undocked)かをプログラムで検知できます。

2. 主要な用語と概念
Angle (角度)
0度(真上)から359.9度までの絶対的な回転位置です。時計回りに数値が増加します。
Change / Delta (変化量)
前回のフレームからどれだけ回転したかの差分です。
Ticks (刻み)
1回転を何分割(例:1回転で12回カチッと鳴るなど)して扱うかの単位です。
Docked / Undocked
クランクの物理的な収納状態。クランクを「引き出す」こと自体をゲーム開始の合図にするような演出もよく使われます。

3. プログラミングでの取得方法 (Lua API)
SDKでは、主に playdate.update() の中で以下の関数を使用して入力を取得します。
playdate.getCrankPosition()
  • 現在の角度(0-360)を返します。
playdate.getCrankChange()
  • 前回の更新からの変化量を返します。時計回りが正、反転が負の値になります。
playdate.isCrankDocked()
  • クランクが収納されているかどうかを true/false で返します。

4. 特殊なコールバック
playdate.update() の外で、特定の挙動を検知するコールバック関数も定義できます。
playdate.cranked(change, acceleratedChange)
  • クランクが回された時に呼ばれます。
playdate.crankDocked() / playdate.crankUndocked()
  • クランクが収納された時、または引き出された時に一度だけ呼ばれます。

5. デザインガイドラインと注意点
Playdate の開発において、クランクの設計には「お作法」があります。
「クランクのみ」を強制しない
ずっと回し続けるのはプレイヤーの腕が疲れる(Crank fatigue)ため、十字キーでも代用できるようにしたり、休憩を挟むような設計が推奨されます。
メニュー操作
システム標準では、メニューのスクロールもクランクで行えるようになっています。
ビジュアルフィードバック
クランクが収納されている時に操作が必要な場合、画面上に「クランクを引き出して!」というインジケーター(システム標準のアイコンがあります)を出すのが一般的です。

6. 代表的な活用例
時間の操作
逆回転で巻き戻し、正回転で再生。
リールの巻き取り
釣りゲームやクレーンゲーム。
物理的な回転
歯車を回す、ネジを締める、ハンドルを回して自機を回転させる。
位置調整
スナイパーライフルの照準合わせや、パズルのピース回転。

クランクは単なる「第3のボタン」ではなく、「触覚的な楽しさ(Tactile feedback)」をゲームに与える装置です。getCrankChange() を使って「どれだけ回されたか」を移動量に直結させるのが、最も Playdate らしい手触りを作る近道です。

関連ページ

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