Coordonnées X Y d'une collision

Salut,
ça fait quelque temps déjà que j’utilise GDeV, :smiley: très bon boulot!!!
j’ai une question, après avoir chercher sur le forum sans rien trouver.
Y’ a t-il un moyen de récupérer les coordonnées X Y de l’endroit d’une collision de sprites??

Pas explicitement.

Cela dit tu peux tracer une ligne virtuelle entre les centres des deux objets et récupérer le milieu de cette ligne, ça te donnera une bonne idée de l’emplacement approximatif. (La ligne dont je parle est une image, il n’y a pas besoin de la tracer vraiment :wink: )

Dans quel but veux tu récupérer ces coordonnées ? :slight_smile:

Merci pour ta réponse ZP_142, mais malheureusement c’est bien trop imprécis…
C’est pour faire apparaître des étincelles au point de collisions :stuck_out_tongue:

Je n’ai pas de solution… mais la réponse m’intéresse beaucoup ! :smiley:
Quelqu’un l’a t’il déjà fait ?

salut c’est peut-être pas la soluce, mais une peut-être une piste. Si tu créais plusieurs points d’origine sur ton image et que quand ça rentre en collision avec un des points tu fais apparaitre ton sprite étincelle sur le point concerné?

Je sais pas si ça marche.

++

Oui c’est bien pour faire apparaître les étincelles à un point données, mais je vois pas comment tester la collision sur ce point??

Victor, n’as tu pas une idée ? :slight_smile:

L’objet en question a une forme compliqué ? Si c’est un cercle met un objet invisible autour et dirige le vers l’autre (chez pas si c’est très clair :laughing: )

J’ai réfléchi un peu à ton histoire.

Si tes objets sont globalement de forme ronde ou carrée (=pas compliqués) tu peux créer un petit composant qui va calculer ça. Je m’explique. Je te conseille de prendre un papier et un crayon pour schématiser ça :slight_smile:

Quand tu as une collision, récupère l’angle de collision (x entre 0 et 360° pour un objet, et x+180° pour l’autre, puisqu’ils sont opposés). Pense a l’éventuel angle déjà présent sur tes objets (si leur angle ne vaut pas 0). Récupère aussi la distance entre les centres des objets.

Ensuite, tu peux avec un petit algorithme deviner la distance entre le centre de ton objet et la fin de la texture de celui ci sur la droite qui relie les centres des deux objets, c’est à dire l’endroit précis sur l’image de l’objet où celui ci touche l’autre. Cette valeur est fonction de l’angle !
Pour un objet rond, par exemple, c’est toujours la même (tous les points sont également espacés du centre).
Pour un triangle, ça marchera aussi si tu trouve la bonne fonction : la valeur est variable.
Pour un carré, la valeur varie entre [distance minimale entre le centre et une extrémité de texture, soit le milieu d’un côté] et [cette valeur]*sqrt(2).
Pour un objet ayant plus de côtés, tu peux je pense l’assimiler à un rond, ou en enlevant une petite valeur suivant l’angle (au milieu d’un côté, la distance sera moins grande qu’a un sommet)

Si tu fais la même chose pour les deux objets, tu obtiendra pour chacun d’entre eux l’angle entre 0° et le point de collision (le sommet de cet angle étant le centre de l’objet), et la distance de ce centre. Ça devrait te permettre de créer tes effets assez précisément, surtout si tu fais la moyenne des deux valeurs.

Si tu te lances là dedans, tu en as pour facile une dizaine d’heures, mais tu devrais arriver à un résultat satisfaisant. Je te souhaite bon courage, hésite pas si tu as des questions :smiley:

Merci beaucoup :mrgreen: , je vais tenter de faire ça! J’éspère que ça ira pour la précision, mon vaisseau est rectangulaire et en rotation (pourquoi faire simple)