Target: lancer des actions au début et à la fin d'un mouvement d'un axe
Target: lancer des actions au début et à la fin d'un mouvement d'un axe
#1Je voudrais faire en sorte que chaque fois que je bouge un certain axe, une touche soit enfoncée au début du mouvement et relachée à la fin (un décalage de quelques 10aines de ms est acceptable entre la fin du mouvement et la fin de l'appui sur la touche)
La fonction KeyAxis ne fonctionne pas pour cela (pas de relâchement de la touche) et la plage de variation du mouvement doit pouvoir être quelconque.
J'ai essayé plusieurs pistes avec la fonction EventHandle mais je n'y arrive pas...
je ne sais par exemple pas quelle syntaxe il faut utiliser pour lancer un REXEC depuis EventHandle ou main()...
Quelqu'un maitriserait TARGET mieux que moi et aurait des idées ?
La fonction KeyAxis ne fonctionne pas pour cela (pas de relâchement de la touche) et la plage de variation du mouvement doit pouvoir être quelconque.
J'ai essayé plusieurs pistes avec la fonction EventHandle mais je n'y arrive pas...
je ne sais par exemple pas quelle syntaxe il faut utiliser pour lancer un REXEC depuis EventHandle ou main()...
Quelqu'un maitriserait TARGET mieux que moi et aurait des idées ?
#2
pour t'aider, il faudrait déjà mieux comprendre le contexte. sur quel simulateur ? quelle touche ? cette touche doit elle varier selon si l'axe augmente ou diminue ?
Dresseur de cochon (sauvage)
#3
Il s'agit de faire en sorte que le frein du collectif (touche F) de BS2 soit activé des que je bouge l'axe du collectif et relaché des que je ne bouge plus celui-ci.
Ce qui correspond a la réalité (il faut libérer le frein du collectif pour le bouger) et sert au différents mode de stabilisation.
Ce qui correspond a la réalité (il faut libérer le frein du collectif pour le bouger) et sert au différents mode de stabilisation.
#4
y'a plusieurs façons de le faire,
tu peux par exemple utiliser un timer qui est déclenché des que l'axe bouge et qui presse la touche F. Une fois ce timer au dessus d'un seul de millisecondes, la touche F est relâché. Sur l'axe, avec un axmap1, tu déclenches une multitude de fois le timer. Tant que l'axe bouge, le timer est reinitialisé, des que tu arrêtes de le bouger, il s'écoule puis relâche la touche F. C'est une des possibilités. C'est pas tres "propre" mais ca devrait marcher.
Sinon il faut faire un filtre de lecture de la valeur de l'axe qui agit si elle évolue ou non.
Exemple : lire la valeur de l'axe, si apres 15 ms la valeur n'a pas changer, relâché F, sinon presser F.
Pour éviter d'envoyer un keyup de F trop souvent, faudra changer la logique et rajouter une mémoire sur l'etat de F :
lire la valeur de l'axe, si après 15 ms la valeur n'a pas changer et si flag 1 vrai, relâché F, sinon presser F et activer le flag 1.
Ca demande a aller regarder ce qui se passe a la fin du manuel de T.A.R.G.E.T (dans les page 50).
En tout cas, ta demande est intéressante
tu peux par exemple utiliser un timer qui est déclenché des que l'axe bouge et qui presse la touche F. Une fois ce timer au dessus d'un seul de millisecondes, la touche F est relâché. Sur l'axe, avec un axmap1, tu déclenches une multitude de fois le timer. Tant que l'axe bouge, le timer est reinitialisé, des que tu arrêtes de le bouger, il s'écoule puis relâche la touche F. C'est une des possibilités. C'est pas tres "propre" mais ca devrait marcher.
Sinon il faut faire un filtre de lecture de la valeur de l'axe qui agit si elle évolue ou non.
Exemple : lire la valeur de l'axe, si apres 15 ms la valeur n'a pas changer, relâché F, sinon presser F.
Pour éviter d'envoyer un keyup de F trop souvent, faudra changer la logique et rajouter une mémoire sur l'etat de F :
lire la valeur de l'axe, si après 15 ms la valeur n'a pas changer et si flag 1 vrai, relâché F, sinon presser F et activer le flag 1.
Ca demande a aller regarder ce qui se passe a la fin du manuel de T.A.R.G.E.T (dans les page 50).
En tout cas, ta demande est intéressante
Dresseur de cochon (sauvage)
#5
Je pense avoir trouvé un moyen de le faire qui devrait lever les pbs de syntaxe que j'ai rencontré, mais je ne pourrais essayer que ce WE.
L'idée:
Gestion dans l'eventhandle de la gestion de l'axe :
Si debut mouvement on initialise un flag, on enfonce la touche F
Sinon (flag activé) on mémorise la position courante de l'axe ds une variable.
Activation d'une routine en boucle ttes les 200 ms (ou plus a voir) (Rexec avec l'option nostop) qui si le flag est activé et si la derniere position de l'axe est restée la meme que celle mémorisée
desactivera la touche 'f'
Re initialisera le flag
Cette routine sera initialisée via une touche, et un 2eme appui sur cette meme touche arretera le rexec et desactivera la touche 'f' si besoin.
Voila l'idée, il me semble que cela devrait marcher...
L'idée:
Gestion dans l'eventhandle de la gestion de l'axe :
Si debut mouvement on initialise un flag, on enfonce la touche F
Sinon (flag activé) on mémorise la position courante de l'axe ds une variable.
Activation d'une routine en boucle ttes les 200 ms (ou plus a voir) (Rexec avec l'option nostop) qui si le flag est activé et si la derniere position de l'axe est restée la meme que celle mémorisée
desactivera la touche 'f'
Re initialisera le flag
Cette routine sera initialisée via une touche, et un 2eme appui sur cette meme touche arretera le rexec et desactivera la touche 'f' si besoin.
Voila l'idée, il me semble que cela devrait marcher...
#7
Ca marche. J'ai fait un script de démo qui est en PJ.
La fonction de tracking est activée par la touche LTB et déactivée par S4 (shift)+ LTB
La diode 1 est allumée quand le tracking est actif.
La touche 'f' est actionnée et la diode 2 est allumée quand il y a mouvement sur l'axe THR_RIGHT
Il y a au maximum 200 ms entre la fin du mouvement et l'arrêt de l'action sur la touche 'f'
La fonction de tracking est activée par la touche LTB et déactivée par S4 (shift)+ LTB
La diode 1 est allumée quand le tracking est actif.
La touche 'f' est actionnée et la diode 2 est allumée quand il y a mouvement sur l'axe THR_RIGHT
Il y a au maximum 200 ms entre la fin du mouvement et l'arrêt de l'action sur la touche 'f'
- Pièces jointes
-
[L’extension « zip » a été désactivée et ne peut plus être affichée.]