[Resolu]Annuler un clic

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
EmileF
Messages : 539
Inscription : 18 Mars 2017 19:39

[Resolu]Annuler un clic

Message par EmileF » 22 Mars 2020 13:54

Bonjour à tous,

Heureusement que le confinement n'interdit pas l'utilisation du PC.

J'aimerai savoir si on peut annuler un clic.
Mon player se déplace quand on appuie sur le bouton gauche de la souris.
Le clic gauche de la souris me sert aussi à sélectionner quelques éléments ou déclenche quelques actions.

Evidemment quand je clique sur un objet, mon player à un sursaut, ça ne change rien au cours du jeu, mais je trouve ça génant.

Je voudrai donc annuler le clic quand j'agis sur un objet pour que le player ne réagisse pas.

J'ai essayé de mettre un booléan, mais dans le script du player j'utilise le FixedUpdate()
dans mes objets cliquable j'utilise le OnMouseDown() ou OnMouseUpAsButton()
et il me semble que le FixedUpdate s'exécute avant les OnMouse
J'ai donc toujours ce petit sursaut

Est-ce que quelqu'un peut me donner une idée ?
Dernière édition par EmileF le 22 Mars 2020 15:28, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5301
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Annuler un clic

Message par boubouk50 » 22 Mars 2020 14:36

Généralement, les inputs sont bien séparés pour éviter ce genre de comportement.
On ne voit plus trop de jeux où le clic gauche permette de tout faire.

Est-il possible de changer gameplay actuel? Par exemple, se déplacer sur le clic droit, ou bien s'en proscrire. Peut-être est-ce là le premier problème: le choix des inputs.

Aussi, pourquoi une saute?
Un clic dure généralement quelques frames (malgré la vitesse à laquelle tu cliques), c'est pour cela que des phases sont créées: Down, Stay et Up. Cela permet de cadrer un clic. Si un clic Down est enregistré sur un objet (donc clic pas déplacement) dans ce cas, il peut couper le déplacement jusqu'au OnMouseUp.
Tu pourrais également effectuer le déplacement non pas sur le Down mais sur le Stay, cela permettrait de "sauter" la frame du clic pour la suivante, ce qui empêcherait la saute.

Un fixedUpdate () est appelé toutes les X millisecondes, il n'est donc pas présent à chaque calcul d'image.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

EmileF
Messages : 539
Inscription : 18 Mars 2017 19:39

Re: Annuler un clic

Message par EmileF » 22 Mars 2020 15:09

Merci Boubouk
Boubouk a écrit : Est-il possible de changer gameplay actuel? Par exemple, se déplacer sur le clic droit, ou bien s'en proscrire. Peut-être est-ce là le premier problème: le choix des inputs.
J'en suis contient, mais j'ai plusieurs options pour déplacer mon player, déplacement avec le clavier, et déplacement avec pression sur les boutons gauche et droit de la souris pour avancer ou reculer. Afin d'essayer de satisfaire les goûts différents de mes testeurs.
Boubouk a écrit :Un clic dure généralement quelques frames (malgré la vitesse à laquelle tu cliques), c'est pour cela que des phases sont créées: Down, Stay et Up. Cela permet de cadrer un clic. Si un clic Down est enregistré sur un objet (donc clic pas déplacement) dans ce cas, il peut couper le déplacement jusqu'au OnMouseUp.
c'est ce que j'ai essayé de faire avec mon booléan mais le soucis c'est que le fixedUpdate() peut se faire n'importe quand par rapport au OnMouse donc avant aussi. Ce qui fait que mon player fait un petit sursaut la plupart du temps.

J'ai essayé de mettre mes commandes du player dans le LateUpdate, mais ça ne marche pas quand même, ça enregistre la pression sur le bouton gauche avant les evenements OnMouse, Si j'ai bien vu la doc

Donc j'essayais de savoir si quelqu'un avait une astuce.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

EmileF
Messages : 539
Inscription : 18 Mars 2017 19:39

Re: Annuler un clic

Message par EmileF » 22 Mars 2020 15:27

Merci Boubouk, grace à toi, j'ai réussi
Boubouk a écrit : Si un clic Down est enregistré sur un objet (donc clic pas déplacement) dans ce cas, il peut couper le déplacement jusqu'au OnMouseUp.
Le petit détail qui tue,
Je réinitialisais mon booléan dans le FixedUpdate, j'ai donc mis ma réinitialisation dans la fonction OnMouseUp,
et avec mes commandes Player dans le LateUpdate() , ça marche.

Je savais qu'en posant ma question ici, je trouverai la solution

Encore merci :super:
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « Scripting Javascript, C# et Boo »