Detecter les touches des manettes

Par cedced19, il y a 11 ans


Javascript NodeJS

Je veux utiliser mon joystick pour controller une caméra IP.
J'ai utiliser le module gamepad.
Voilà comment j'ai fais:

1)Démarrage

var gamepad = require("gamepad"); //Plugin for gamepad var chalk = require("chalk"); //Plugin for colors gamepad.init() // List the state of all currently attached devices for (var i = 0, l = gamepad.numDevices(); i < l; i++) { console.log(i, gamepad.deviceAtIndex()); } // Create a game loop and poll for events setInterval(gamepad.processEvents, 16); // Scan for new gamepads as a slower rate setInterval(gamepad.detectDevices, 500);

2)Gestions des events

Pour cela il faut jouer avec sa manette en utilisant ces fonctions:

// Listen for move events on all gamepads gamepad.on("move", function (id, axis, value) { console.log("move", { id: id, axis: axis, value: value, }); }); // Listen for button up events on all gamepads gamepad.on("up", function (id, num) { console.log("up", { id: id, num: num, }); }); // Listen for button down events on all gamepads gamepad.on("down", function (id, num) { console.log("down", { id: id, num: num, }); });

id = la manette
axis= l'axe
value= la valeur
num= le button appuyé

Puis remplacer le code au fur à mesure:

// Listen for move events on all gamepads gamepad.on("move", function (id, axis, value) { if(axis == 5 && value == 0){ console.log(chalk.yellow('Gauche') + ' du petit controller'); return; } if(axis == 5 && value == 1){ console.log(chalk.yellow('Droite') + ' du petit controller'); return; } if(axis == 6 && value == 0){ console.log(chalk.yellow('Haut') + ' du petit controller'); return; } if(axis == 6 && value == 1){ console.log(chalk.yellow('Bas') + ' du petit controller'); return; } if(axis == 3 && value < 0 && value >= -1){ if(value == -1){ console.log(chalk.yellow('Haut stict') + ' du grand controller'); return; } console.log(chalk.yellow('Haut') + ' du grand controller'); return; } if(axis == 3 && value > 0 && value <= 1){ if(value == 1){ console.log(chalk.yellow('Bas stict') + ' du grand controller'); return; } console.log(chalk.yellow('Bas') + ' du grand controller'); return; } if(axis == 4 && value < 0 && value >= -1){ if(value == -1){ console.log(chalk.yellow('Gauche stict') + ' du grand controller'); return; } console.log(chalk.yellow('Gauche') + ' du grand controller'); return; } if(axis == 4 && value > 0 && value <= 1){ if(value == 1){ console.log(chalk.yellow('Droite stict') + ' du grand controller'); return; } console.log(chalk.yellow('Droite') + ' du grand controller'); return; } }); gamepad.on("up", function (id, num) { num++; console.log('Numéro '+ chalk.yellow(num) + ' relaché'); }); gamepad.on("down", function (id, num) { num++; console.log('Numéro '+ chalk.yellow(num) + ' appuyé'); });

Je voudrai savoir si d'autre on utiliser un module ou une méthode plus simple. Merci de vos réponses.

Aucune réponse