Skip to content

Gamepads & Virtual Controls

Flixel-Pixi supports physical controllers via the standard HTML5 Gamepad API (FlxGamepadManager) alongside on-screen touch virtual DPads and analog sticks (FlxVirtualPad, FlxVirtualStick).


1. Physical Gamepads with FlxGamepad

ts
const pad = this.context.input.gamepad.getGamepad(0);

if (pad && pad.connected) {
  // Digital Buttons
  if (pad.justPressed('A')) {
    player.jump();
  }

  // Analog Sticks (-1.0 to 1.0)
  const axisX = pad.getAxis('LEFT_X');
  const axisY = pad.getAxis('LEFT_Y');

  if (Math.abs(axisX) > 0.15) {
    player.velocity.x = axisX * 250;
  }
}

2. On-Screen Virtual Controls for Mobile

Add an on-screen D-Pad or action buttons for mobile touch devices:

ts
import { FlxVirtualPad } from 'flixel-pixi';

// Create a Full D-Pad on bottom-left and A/B buttons on bottom-right
const virtualPad = new FlxVirtualPad('FULL', 'A_B');
this.add(virtualPad);

// In update():
if (virtualPad.buttonA.justPressed()) {
  player.jump();
}
if (virtualPad.dPad.left.pressed()) {
  player.velocity.x = -200;
}

Released under the MIT License.