Author Topic: Bug ou limite du IsKeyboardKeyPressed  (Read 7176 times)

0 Members and 1 Guest are viewing this topic.

Steph3D

  • Capo Regime
  • ***
  • Posts: 399
Bug ou limite du IsKeyboardKeyPressed
« on: February 26, 2008, 11:34:12 PM »
Impossible de gérer plus de deux touches en même temps

Si mon véhicule avance et toute UP + LEFT, puis je me mets à tirer ESPACE, soit il arrête d'avancer, soit il tourne plus, fort gênant dans un jeu.

Testé & confirmé avec un code simple.

Code: [Select]
<script name="update_scene" run_mode="EXECUTE_EACH_FRAME" >
<raw_data><![CDATA[

is_pressedUP = HYP_Input.IsKeyboardKeyPressed( HYP_KEY_UP );
if(is_pressedUP==1) then
    HYP_DrawText( 10, 00, 1.0, 1.0, 0.0, "UP" );
is_pressedUP = 0;
end

is_pressedDOWN = HYP_Input.IsKeyboardKeyPressed( HYP_KEY_DOWN );
if(is_pressedDOWN==1) then
HYP_DrawText( 10, 20, 1.0, 1.0, 0.0, "DOWN" );
is_pressedDOWN = 0;
end

is_pressedLEFT = HYP_Input.IsKeyboardKeyPressed( HYP_KEY_LEFT );
if(is_pressedLEFT==1) then
        HYP_DrawText( 10, 40, 1.0, 1.0, 0.0, "LEFT" );
is_pressedLEFT = 0;
end

is_pressedRIGHT = HYP_Input.IsKeyboardKeyPressed( HYP_KEY_RIGHT );
if(is_pressedRIGHT==1) then
        HYP_DrawText( 10, 60, 1.0, 1.0, 0.0, "RIGHT" );
is_pressedRIGHT = 0;
end

    ]]></raw_data>
</script>

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2343
    • oZone3D.Net
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #1 on: March 03, 2008, 06:59:11 PM »
étrange cette histoire....
Je regarde asap.

nick_zen

  • Soldier
  • **
  • Posts: 165
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #2 on: March 03, 2008, 07:21:10 PM »
Comme je l'avais dit dans le topic:
http://www.ozone3d.net/smf/index.php/topic,1289.0.html

La solution qui résout tous ces problèmes est de préciser l'état de chaque touches dans le if:
if(is_pressedUP==1 and is_pressedDOWN==0 and is_pressedLEFT==0 and is_pressedRIGHT==0) then

Et comme ca ca marche!!

shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #3 on: March 03, 2008, 07:30:47 PM »
Quote
La solution qui résout tous ces problèmes est de préciser l'état de chaque touches dans le if:
if(is_pressedUP==1 and is_pressedDOWN==0 and is_pressedLEFT==0 and is_pressedRIGHT==0) then

Et comme ca ca marche!!
Oui sauf que si on a 4 touches de direction, une touche ctrl et une touche alt qui peuvent être appuyées, ça fait quand même 2^6= 64 cas à prévoir...  :(
3D, photos panoramiques : http://www.shadows.fr

Steph3D

  • Capo Regime
  • ***
  • Posts: 399
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #4 on: March 03, 2008, 07:33:33 PM »
Et puis faut pas que sa marche avec de la bidouile et un code inutilement complexe, mais que ça marche comme ça le devrait ;)

Si tu vois un bug, faut pas essayé de le contourner, mais de le signaler, pour que Dem soit bien débugé. Faut pas hésité, car si personne signale les bug, ça restera bugué ;)

Ici, chaque touche et indépandantes, il n'y a pas de résons que ça coince à 3 touches, quelque soit la conbinaison.

nick_zen

  • Soldier
  • **
  • Posts: 165
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #5 on: March 03, 2008, 07:42:34 PM »
c'est vrai qu'il faut parler d'un bog.

C'est pour cela que sous le topic
http://www.ozone3d.net/smf/index.php/topic,1289.0.html
on en a parlé.

De plus, JeGX ne lit surement pas tous les sujets et c'est judicieux de le regrouper ici.

J'aurais pu poser ma question ici au lieu de ce topic ci-dessus, note pour plus tard...

Steph3D

  • Capo Regime
  • ***
  • Posts: 399
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #6 on: March 03, 2008, 07:46:54 PM »
Remarque, un sous dossier idées + un sous dossier, rapport de bugs aurrait etait plus judicieux, on risque de tous mélanger ;)

shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #7 on: March 03, 2008, 08:05:36 PM »
Quote
Remarque, un sous dossier idées + un sous dossier, rapport de bugs aurrait etait plus judicieux, on risque de tous mélanger Wink
Mettre les bugs en sous dossier de wish list, ça me semble pas très clair...  Pourquoi pas carrément une section au même niveau que wish list ?
3D, photos panoramiques : http://www.shadows.fr

Steph3D

  • Capo Regime
  • ***
  • Posts: 399
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #8 on: March 03, 2008, 08:10:42 PM »
ben c'est se que je dis, mais je pensé metre les 2 parties au meme niveau en sous dossier de Dem, pour pas avoir 36 milles forums à l'accueil du site, ça fait peur  :transpi:

shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #9 on: March 03, 2008, 08:12:38 PM »
Ah ok, j'avais mal compris, sorry. :mrgreen:
3D, photos panoramiques : http://www.shadows.fr

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2343
    • oZone3D.Net
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #10 on: April 29, 2008, 04:13:22 PM »
Je viens mettre un micro demo sur le blog qui gère 6 touches en meme temps:
http://www.ozone3d.net/blogs/demoniak3d/?p=87

Je pense que les problèmes de gestion de plusieurs touches viennent surtout de la logique du code...

nick_zen

  • Soldier
  • **
  • Posts: 165
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #11 on: May 05, 2008, 09:01:23 AM »
Je me demande si ça répond vraiment à ce problème de touches.

Le problème apparaissait lorsqu'on appliquait la gestion de touches sur un objet.
Dans ce cas, nous avons qu'une indication que la touche a bien été appuyée.

Je vais essayer d'appliquer cela à un objet et si le problème persiste je reviens.

nick_zen

  • Soldier
  • **
  • Posts: 165
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #12 on: May 05, 2008, 09:19:30 AM »
Pas de changement au problème.

Lorsque j'applique ce code à une sphère - comme dans le jeu morbak - le problème persiste.

J'ai choisi la lettre 'V' pour faire aller la sphère sur le grid en haut.
la touche 'B' permet d'aller à droite.
la touche 'C' fait aller la boule à gauche.


Cependant le problème est le même.
lorsque j'appuie sur:

- gauche (appuyé + laissée appuyée) ensuite touche droite appuyée  = pas de modification dans le mouvement. la sphère  continue à aller à gauche.

- droite (appuyé + laissée appuyée) ensuite touche gauche appuyée  = modification dans le mouvement. Lorsqu'on appuie sur la touche gauche, la sphère change de direction et va à gauche.

nick_zen

  • Soldier
  • **
  • Posts: 165
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #13 on: May 05, 2008, 01:47:04 PM »
Quote
Je viens mettre un micro demo sur le blog qui gère 6 touches en meme temps:

Qu'est ce que tu entends par 6 touches en même temps? De toute façon, il est impossible d'appuyer sur 6 touches en même temps.

En faisant de cette manière, il est possible de gérer toutes les touches du clavier en même temps. Mais de toute façon il n'est pas possible d'appuyer sur plus de 3 touches - au grand max - en même temps et que ça marche (dans ta démo afficher 3 lettres simultanément)

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2343
    • oZone3D.Net
Re: Bug ou limite du IsKeyboardKeyPressed
« Reply #14 on: May 15, 2008, 07:57:07 AM »
Si dans la petite demo tu peux appuyer sur 6 touches en meme temps, il n'y a pas de limitations. Les touches X, C, V, B, N et M peuvent toutes les 6 être pressées en meme temps. A mon avis tu un plus un problème dans la logique de ton code.