Skip to main content

Gamepad

Support for Xbox, PlayStation, and other controllers.

Live Demo​

🎮Gamepad Input Demo
Loading demo...

Basic Usage​

const gamepad = game.make('input').gamepad;

// Button events
gamepad.on('button-a', () => jump());
gamepad.on('button-b', () => cancel());
gamepad.on('button-x', () => attack());
gamepad.on('button-y', () => interact());

// Triggers
gamepad.on('trigger-left', (value) => {
// value: 0-1
aim(value);
});

gamepad.on('trigger-right', (value) => {
if (value > 0.5) shoot();
});

Analog Sticks​

function update(deltaTime: number) {
// Get stick values (-1 to 1)
const leftStick = gamepad.getAxis('left-stick');
const rightStick = gamepad.getAxis('right-stick');

// Movement
player.move(
leftStick.x * speed * deltaTime,
leftStick.y * speed * deltaTime
);

// Camera
camera.rotate(
rightStick.x * sensitivity,
rightStick.y * sensitivity
);
}

Button Mapping​

StandardXboxPlayStation
button-aAX
button-bBCircle
button-xXSquare
button-yYTriangle
shoulder-leftLBL1
shoulder-rightRBR1
trigger-leftLTL2
trigger-rightRTR2
dpad-up/down/left/rightD-PadD-Pad

Vibration​

// Simple vibration
gamepad.vibrate(500); // 500ms

// Dual motor
gamepad.vibrate({
duration: 200,
weakMagnitude: 0.5, // Right motor
strongMagnitude: 1.0 // Left motor
});

Multiple Controllers​

// Get specific gamepad
const player1Gamepad = gamepad.getGamepad(0);
const player2Gamepad = gamepad.getGamepad(1);

// Connection events
gamepad.on('connected', (index) => {
console.log(`Controller ${index} connected`);
});

gamepad.on('disconnected', (index) => {
console.log(`Controller ${index} disconnected`);
pauseGame();
});