Home
uupaa edited this page Aug 25, 2018
·
47 revisions
GamePad.js は Gamepad API を使いやすくラップしたものです。
var pad = new GamePad()
で、ゲームパッドの接続を待ちます。
pad[0]
に最初に接続したパッドの情報が入ります。パッドは同時に4つまで接続できます。
var pad = new GamePad(function(connect(player) { // @arg UINT8 - player number. 0 - 3
console.log("connected. player: " + player); // player は 0 から 3 までの値です
});
function gameUpdate() { }
function gameRender() { }
function gameLoop() {
if (pad.connected) { // 接続中のパッドがあれば true
pad.input(); // 最新のボタンやスティックの状態をスキャンします
if (pad[0]) { // 最初に接続されたパッドがまだ有効なら true になります
input(pad[0].values, // パッドのボタンやスティックの現在値
pad[0].diffs); // 前回との差分情報
}
if (pad[1]) { // 2番目に接続されたパッドがまだ有効なら true になります
input(pad[1].values, // パッドのボタンやスティックの現在値
pad[1].diffs); // 前回との差分情報
}
if (pad[2]) { ... } // 3番目(略)
if (pad[3]) { ... } // 4番目(略)
}
gameUpdate();
gameRender();
requestAnimationFrame(gameLoop);
}
gameLoop();
function input(values, // @arg Uint8Array - current values
diffs) { // @arg Uint8Array - diff values
// values = [U, R, D, L, A, B, C, X, Y, Z, L1, R1, L3, R3, S1, S2, LX, LY, RX, RY, L2, R2]
// diffs = [U, R, D, L, A, B, C, X, Y, Z, L1, R1, L3, R3, S1, S2, LX, LY, RX, RY, L2, R2]
// --- Aボタンで Jump ---
if (diffs[GAMEPAD_KEY_A]) {
if (values[GAMEPAD_KEY_A]) { // A BUTTON OFF -> ON
startJump(...);
} else { // A BUTTON ON -> OFF
endJump(...);
}
}
// --- 十字キーの左右で移動 ---
if (values[GAMEPAD_KEY_L]) {
moveLeft(...);
} else if (values[GAMEPAD_KEY_R]) {
moveRight(...);
}
}
サポートしているデバイスの一覧も御覧ください。