Trait entre objet et pointeur souris [RESOLU]

bonjour a tous
Je voudrais creer un trai entre un objet et le pointeur de la souris
Quand on clique sur le premier objet il devein en surbrilliance et un trai et alors creer entre lui et la souris jusqu’au nouveau clique sur un autre objet ou sur le meme pour annuler la selection
je c’est pas si vous voyer ce que je veux dire ( sinon c’est pour faire un jeux dans le meme style que , phage Wars 2 ou nano wars)
merci
cordialement hades

J’ai trouvé une solution :
Tu fais une image “trait” horizontale de longueur 200 pixels. La moitié gauche est transparente et la moitié droite est blanche.
(Ou d’une autre couleur mais avec le blanc c’est plus facile de modifier la couleur par la suite.)

Tu crées un objet “trait” avec cette image. Tu places l’origine au centre. Rotation automatique.

Tu places l’objet “trait” à la position de la souris.
Tu lui donnes la taille horizontale "distance entre le trait et l’objet"/100.
Tu diriges “trait” vers l’objet et le tour est joué.

ça te fait un événement avec 3 actions simplement.
J’ai testé, ça marche. :slight_smile:

Solution qui peut être préférable :

Si ton trait est temporaire, tu peux utiliser les actions de l’extension “Dessin primitif” ( à activer dans les extensions utilisées par le jeu ).

Quand il y a un clic, tu stocke les coordonnées de la souris dans deux variables X et Y.
Ensuite, avec un objet Dessinateur manuel, tu dessine un trait qui part de ces deux coordonnées et qui va aux coordonnées de la souris.
Note qu’il faut redessiner le trait à chaque fois qu’il doit apparaitre à l’écran. Si tu le dessine une seule fois, il sera effacé au prochain rafraichissement de l’écran.

Bon j’ai tester le truc mais rien ne s’affiche a l’ecran ou alors c’est moi qui a pas su le parametre

le bouton gauche de la souris est appuyé
Faire =Val(mouseX[])à la varialbe globale souriX
Faire =Val(mouseY[]) à la variable globale souriY

le bouton gauche de la souris est appyué
(global)Dessiner de Val(globalVariable[souriX]);Val(globalVarialbe[souriY]) a Val(mouseX[]);Val(mouseY[]) une ligne (èpausseur: 4) avec test

j’ai du certainement faire une erreur quelque part mais je vois pas ou …
cordialement

Normal, SouriX et SouriY vont être à la même position que la souris, et le trait aura donc une longueur nulle.
Il faut que tu modifie ces variables juste une fois, quand il y a un clic. Tu peux utiliser une variable pour éviter la répétition, comme ceci :

Conditions : Bouton “Gauche” de la souris
-------------- La variable “JustClicked” est = à 0
Actions : Mettre la variable MouseXorigin à VAL(mouseX[])
----------- Mettre la variable MouseYorigin à VAL(mouseY[])
----------- Faire =1 à la variable “JustClicked”

Conditions : (Contraire) Bouton “Gauche” de la souris
----------- Faire =0 à la variable “JustClicked”

bon je suis désoler mais cela ne marche toujours pas aucun trait a l’écran
cordialement

Vérifie que tes évènements correspondent bien à ce que je t’ai conseillé.
Peut tu faire une copie d’écran de tes évènements ?

voila l’image


cordialement

Salut,

Le dernier événement,
il faut en condition “Toujours” car l’objet qui dessine les lignes les affichent que pour une image,
donc il faut que l’action se fasse tout le temps.

Non c’est bon car la variable reste à 1 lors du clic.

Est ce que tu a bien placé ton objet dessinateur manuel nommé “Ligne” sur la scène ?

ah non donc je doit dessiner un objet et l’appeler ligne ?

Après avoir créé ton objet “Ligne” dans l’éditeur des objets, tu dois aussi en placer un sur la scène, comme tu le fais pour les autres objets.

ok merci c’est bon ca marche
bon maintenant si je veux faire la même chose mais pour 2 objet
on clik sur le premier et après on survol le deuxièmement et la les 2 trait nous suivent
je suis vraiment pas doué :open_mouth:

Si tu peux tracer un trait, tu pourras sûrement en tracer un 2e, peut-être en mettant dans des variables les coordonnées de tes objets…
La méthode de 4ian est nettement meilleure bien sûr.
Je t’avais proposé la mienne car je l’avais utilisée pour tracer des rayons lumineux avec dégradé de couleurs.

oui enfin voila a peu près ce que je voudrais faire
Floops wars.JPG

si quelqu’un a une idée merci d’avance.
cordialement.

Dans ce cas, il faut procéder légèrement différemment je pense. Quand un objet “Cellule” est sélectionné par un clic, met lui sa variable “Selected” à 1.
Ensuite, tu fais :

Conditions : La variable “Selected” de “Cellule” est = à 1
Actions : Pour chaque objet “Cellule” faire :
---------- Dessiner de OBJ(Cellule[x]);OBJ(Cellule[y]) à VAL(mouseX[]);VAL(mouseY[]) une ligne avec Ligne.

Tu trouvera l’action “Pour chaque objet” dans la catégorie “Avancé”.

ceci marche en partie car en fait meme quand je ne selection pas la cellule la ligne et creer
Floops wars multiple.JPG
voici les événement
floops wars evenement.JPG

c’est bon désoler j’ai rajouter une condition
faire la ligne que si le tank a l’animation a 1 et cela fonctionne
merci pour votre aide