coucou Xenon3k si du passe par la :-) on ne peu plus ajoute les jeux sur le site.
Emmanuel - 13/03/2024 21:18:06
Merci Manu, il faut que je trouve un peu de temps pour regarder ça.
Xenon3K - 16/03/2024 00:03:19
Comment éviter les click en chaine sur un objets?
Wolkam
lundi 31 octobre 2016 à 10:30
Bonjour,
Une petite question parce que j'ai tout le temps une galère toute bête quand j'intercepte un clic sur un objet actif a deux états
en fait j'ai un bouton avec 2 etats "activé" et "désactivé" mais si c'est codé comme cela ça ne fonctionne pas
clic sur bouton + anim Stopped is playing => change animation to Walking clic sur bouton + anim Walking is playing => change animation to Stopped
Le problème c'est que je pense que le système traite les deux infos à la suite et donc passe par les deux états. Je ne peux pas utiliser l'objet bouton parce qu'en fait je traite bcp plus d'état que 2, alors aujourd'hui je passe par un flag qui déclenche un groupe qui change l'état du bouton, mais je ne sais pas s'il y a une astuce pour faire plus simple, en une seule ligne.
Si vous avez une info je suis preneur, j'essaye de simplifier mon code en ce moment
Soit, tu inverses un drapeau. Soit la vielle technique du valeur du compteur=1- valeur du compteur pour transformer une incrémentation en interrupteur 1/0
Wolkam
lundi 31 octobre 2016 à 10:55
j'ai déjà essayé avec des flags, sans grand succès j'avais le même souci en fait a part a lui faire activer un groupe, ce que jke fais, mais sur une ligne d'évent, j'ai pas trouvé.
Met dans un objet actif les deux etat de ton bouton et place la vitesse a zero. Ensuite: quand clique sur objet actif inverser le drapeaux 0
drapeaux 0 on image d'animation a 1 (l'etat du bouton bien sur) ICI TU MET CE QUI SE PASSE COMME ACTION
drapeaux 0 off image d'animation a 0 (l'etat du bouton bien sur) ICI TU MET CE QUI SE PASSE COMME ACTION
Wolkam
lundi 31 octobre 2016 à 11:19
Merci Patrice et denis :)
Bon je ne peux pas appliquer cela car mon cas est bcp plus compliqué mais dans l'idée c'est ce que je fais, tu ne peux pas traiter le click sur la même ligne tu est obligé de passer sur un système qui gère l'état.
Moi dans mon jeu, j'ai un bouton "buy", quand tu clique le bouton devient "setup" tu cliques encore , ca affiche les catégories de piege et le bouton devient "close". tu cliques sur une catégorie ca affiche les pieges et le bouton devient "back", etc...
Sauf que si j'enchaine les event "click sur bouton + anim active", ca ne fonctionne pas, donc je fais avec un compteur et j'ouvre un groupe qui traite en fonction du compteur. Mais bon c'est plus complexe a gérer pour moi car j'ai plusieur instance du bouton et comme j'ouvre un groupe, je dois retrouver le bouton qui a été cliqué.
Bref, merci en tout cas, àa me conforte dans l'idée que je ne peux rien faire pour éviter qu'il détecte le click de la souris sur l'objet et l'applique a chaque event qui suivent. Je sais c'est pas clair a décrire lol
Ce qui fonctionne le mieux dans mon code quand il devient trop complexe c'est de généraliser. Arriver à transformer: clic sur bouton + anim Stopped is playing => change animation to Walking clic sur bouton + anim Walking is playing => change animation to Stopped en quelque chose comme: clic sur bouton => state("bouton") = (state( "Trigger" )+1)mod num_states( "Trigger" ) + state("objet") = state("bouton") + change animation to state("objet")*12 où num_states est le nombre d'états possibles, ici 2 avec stopped(0) et walking(1) En gros une mini machine d'états.
Un truc que j'avais fait pour Middlmouse je crois : C'est quand on clic et qu'un drapeau est On, on fait l'action et le drapeau passe à Off. Puis quand on ne clic plus, le drapeau passe à On.
L'astuce infaillible que j'utilise avec une phase tactique, un actif avec une animation, on clique, on lance l'animation, cela évite que CTF s'emballe.
Le reste coule de source, tant que l'animation est jouée via une négation, aucun clic est pris en compte, pour un truc plus complexe, une animation en plus, bien sûr on peut utiliser en prime une variable, l'animation de l'actif est terminée plus 1 à la variable A, B, ou C.
A+
Edit: L'important est de bien décomposer les différentes phases "click".
Voici un exemple avec 3 phases, facile à capter, facile à modifier.
Edit: Optimiser le klik code c'est bien. Mais reprendre un projet, avec 3 heures pour se relire, parce qu'on a oublié le principe du truc... Optimiser à outrance, n'est pas forcément plus productif.
Merci Kloug, ta solution est pas mal aussi, plus simple pour ajouter différentes phase, et tu utilise l'anim pour freiner le moteur. Merci en tout cas pour toutes vos solutions !!! j'ai le choix maintenant, même si mon code tourne bien a présent, je vais voir si je refait tout ou si je garde ces astuces pour d'autres partie du jeu.