Bonsoir à tous , j'ai un petit problème sur procesing je suis entrain de faire un petit jeu de plateforme , donc je code chaque touches avec des par exemple :
if ((keyPressed == true) && (key == 'a'))x=x-vx;
if ((keyPressed == true) && (key == 'd'))x=x+vx;
j'ai un problème qui es assez prévisible , c'est que je ne peux pas presser les deux touches en même temps .
Si je veux que mon personnage je saute je presse la touche assignée au saut mais ça annule la pression que je suis entrain de faire sur la touche pour me faire aller à droite .
Je me demandais donc si il y avait un autre moyen que les if (keyPressed == true) pour utiliser mon clavier .
Merci d'avance
Dernière modification par besseo (2016-03-22 22:32:19)
Hors ligne
C'est une bonne question que tu poses et j'ai trouvé ça sur le forum Processing :
boolean isKeyUp, isKeyRight, isKeyLeft, isKeyDown; void draw() { } void keyPressed() { int k = keyCode; setDirection(k, true); } void keyReleased() { setDirection(keyCode, false); } void setDirection(int k, boolean bool) { if (k == UP | k == 'W') isKeyUp = bool; else if (k == DOWN | k == 'S') isKeyDown = bool; else if (k == LEFT | k == 'A') isKeyLeft = bool; else if (k == RIGHT | k == 'D') isKeyRight = bool; }
Hors ligne
Salut Besseo et bienvenue!
Tu peux utiliser un tableau pour stocker les touches qui sont en train d'être appuyées, voila un petit exemple qui fonctionne avec les touches g, h, y, b pour faire se déplacer un cercle. C'est adapté d'une discussion sur l'ancien forum processing! https://processing.org/discourse/beta/n … 08305.html
int nrKeys = 0;
PFont font;
boolean[] downKeys = new boolean[256];
float x = 50;
float y = 50;
void setup() {
size(200,200);
fill(255);
font = createFont("Courier", 20);
textFont(font);
}
void draw() {
background(0);
// afficher l'etat des touches pressees
nrKeys = 0;
for (int i=0; i<downKeys.length; i++) {
if (downKeys[i]) {
nrKeys++;
text((char)i, 10 * nrKeys, height/2);
}
}
fill(255, 255);
text("Nr. of Keys: " + nrKeys, 20,20);
// modifier les valeurs des variables en fonction des touches appuyees
// g : mouvement vers la gauche en x
// h : mouvement vers la droite en x
// y : mouvement vers le haut en y
// b : mouvement vers le bas en y
if (downKeys['g']) x -= 1;
if (downKeys['h']) x += 1;
if (downKeys['y']) y -= 1;
if (downKeys['b']) y += 1;
// tracer un cercle à la position x, y
fill(255, 0, 0, 127);
ellipse(x, y, 10, 10);
}
void keyPressed() {
println(key);
if (key<256) {
downKeys[key] = true;
}
}
void keyReleased() {
if (key<256) {
downKeys[key] = false;
}
}
Hors ligne
Merci pour vos résponses très rapide je vais tester ça desuite
Hors ligne