入力デバイス
p5play で利用可能な入力デバイスは次のとおりです:
kb
/keyboard
…キーボードmouse
…マウスcontros
/controllers
…ゲームコントローラーtouches
…タッチスクリーン
これらの入力デバイスはすべて、入力状態を取得する、シンプルな presses
、 pressing
、 released
関数を実装しています。
また、入力デバイスは全ての入力状態を、プロパティとして保持しています。例えば kb.space
は、ユーザーがスペースキーを押し続けているフレーム数を保持します。ユーザーがその入力をやめると、プロパティはリセットされます。
p5play は、論理和を使用して、異なる入力デバイスから同じアクションを簡単にトリガーできます。
このコードサンプルでは、スペースキーを押すか、マウスをクリックすると、スプライトが緑色になります。
キーボード
kb
は、 'enter' 、 'backspace' 、 'control' を含む、キーボードのほぼすべてのキーを検知します。
アルファベットキーの指定は、大文字と小文字を区別しません。ユーザーがシフトキーを押しているかどうかを確認するには、 kb.pressing('shift')
を使用してください。
WASD キーはプレイヤーキャラクターの移動によく使われるため、 WASD キーとカーソルキーの押下が同じ意味であることを検出する、 'up' 、 'down' 、 'left' 、 'right' という方向名も指定することができます。
カーソルキーを個別に検知できるよう、 'arrowUp' 、 'arrowDown' 、 'arrowLeft' 、 'arrowRight' も指定することができます。
二人同時プレイのゲームでは、ふたりめのプレイヤーは移動に IJKL キーを使用することが一般的です。これらのキーは 'up2' 、 'down2' 、 'left2' 、 'right2' を指定して参照できます。
マウス
デフォルトのマウス入力は 'left' (左)ボタンで、トラックパッドでの一本指でのクリックです。また、マウスの 'right' (右)ボタン(トラックパッドでの二本指クリック)やマウスの 'center' (中央)ボタンも使用できます。
mouse.x
と mouse.y
は、カメラの位置に基づいた、ワールド内でのマウスカーソルの座標です。
mouse.canvasPos
は、ワールドにかかわらず、キャンバスに対する絶対座標を表します。
mouse.visible
は、マウスカーソルが表示されるかどうかを決定するブール値です。
mouse.cursor
には カーソルスタイル の値を設定できます。デフォルトは 'default' で、他には 'grab' 、 'move' 、 'pointer' 、
'wait' などがあります。
スプライトマウス
コライダーを持つスプライトは、スプライト上でのマウス入力を検知するための、独自のマウスオブジェクトを持っています。
sprite.mouse
オブジェクトは、 mouse
入力オブジェクトとほとんど同じですが、追加機能があります。
hovers
と hovering
は、ユーザーがマウスカーソルをスプライトに重ねたことを検知します。
dragging
は、ユーザーがマウスボタンを押下しながらマウスを移動している間、検知し続けます。
mouse.x
はキャンバスに対するマウスの x 座標であり、 sprite.mouse.x
はスプライトに対するマウスの x 座標です。
ゲームコントローラー
contros
(別名 controllers
)配列は、 Web
ブラウザが認識している各ゲームコントローラーを、オブジェクト形式の要素として格納しています。それぞれのゲームコントローラーオブジェクトは、以下のボタンの入力状態を取得します:
a
、 b
、 x
、 y
(それぞれ、 XBox
コントローラーでのボタン名です。別のコントローラーの場合、適宜読み替えてください)、l
(左ショルダー/バンパー)、r
(右ショルダー/バンパー)、lt
(左トリガー)、rt
(右トリガー)、up
、down
、left
、right
(それぞれ、十字ボタンの方向)、lsb
(左スティック押し込み)、rsb
(右スティック押し込み)、start
、
select
。
leftStick
と rightStick
は、コントローラーの各アナログスティックの倒れ方を、 x と y
のプロパティを持つオブジェクトとして表します。これらの値は、それぞれの成分方向に倒れる深さを -1 ~ 1 の範囲で示しており、 0 は、その方向には倒れていないことを意味します。
一部のコントローラーには、押し込みの深さを検知するアナログトリガーがあり、その深さは leftTrigger
と rightTrigger
によって、
0 ~ 1 の数値として示されます。
通常の JavaScript 配列と同様、接続された特定のコントローラーには、添字でアクセスできます。例えば、 contros[0]
と
contros[1]
は、 1 番目と 2
番目のコントローラーです。ただし、入力状態を取得する前に、この配列にゲームコントローラーが存在するかどうか、忘れずに確認してください。
便利なショートカットアクセサとして、 contro
を用意しています。これは contros[0]
の入力を取得することができ、かつ、ゲームコントローラーが接続されていなくても例外をスローすることがありません。
お試しあれ! ゲームコントローラーを接続し、そのいずれかのボタンを押すと、p5play によって検知されます。
タッチ
タッチスクリーンを操作するたびに、 touch (タッチ)オブジェクトが生成され、 touches
配列に追加されてゆきます。
各タッチオブジェクトには、タップやドラッグの状態を検出する、独自の関数があります。
touch.x
と touch.y
は、カメラの位置に基づいた、ワールド内でのタッチの座標です。
touch.canvasPos
は、ワールドにかかわらず、キャンバスに対する絶対座標を表します。
touch.id
は、タッチを識別する、一意の番号です。
touch.duration
は、タッチが発生していたフレーム数です。
各タッチが終了した後のフレームでは、そのタッチオブジェクトは touches
配列から削除されます。 touches[0]
は、
mouse
と同じ意味になります。
このタッチのデモでは、スクリーンをタップするとボックスが生成され、ドラッグで放り投げられます!