Forums Développement Multimédia

Aller au contenu

Collision entre éléments se trouvant dans un même tableau(SPRITE)

TUTO CODE ActionScript

6 réponses à ce sujet

#1 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 12 March 2015 - 10:55 AM

Bonjour. Je voudrai mettre en place un scenario : 4 carrés de type sprite et un cercle de type sprite. Tous contenus dans un même tableau de sprite. Il s’agit de tester la collision entre le cercle et l’un des carrés et pousser ledit carré selon le côté dans lequel le cercle est en collision avec celui-ci. Ensuite, si les deux carrés sont en collision, le cercle ne peut pas les pousser. Par exemple, Si les deux carrés sont en collision horizontalement, le cercle ne peut pousser qu’un d’eux vers le haut ou bas. Merci de bien vouloir m’aider. :cry:

#2 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 12 March 2015 - 11:44 AM

Bonjour alpha_job.

Ton problème est un problème de géométrie avant d'être un problème de code.
Il faut que tu le résolves, au moins en français courant, avant d'attaquer le codage.

Comment vois-tu la résolution de ton problème ?

#3 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6940 messages

Posté 12 March 2015 - 12:54 PM

Hello,

En ce qui concerne les collisions tu as une fiche explicative ici : http://forums.mediab...iche_collisions
Pour le rendu (car il est nécessaire de séparer rendu et calculs), c'est ici : http://forums.mediab.../fiche_rendus2d

Pour tester la collision sur tous les éléments d'un tableau, pour ma part j'utilise une simple boucle sur le tableau, avec une condition qui interdit de tester la collision sur l'objet principal qu'on est en train de tester (ici par exemple le cercle). Au besoin je refais une nouvelle boucle dans la première afin de tester la collision des autres objets entre eux (exemple deux carrés en collision alors le cercle ne peut les pousser).

Comme le dit Didier, il faut avant tout que tu analyse bien tout ce qui doit se passer, le formaliser en Français (algorithmique) pour vérifier que ton pseudo code est logique, et enfin tu pourra commencer à coder.

La réactivité de tes objets dépend en fait des conditions que tu insére dans tes boucles, et le tout se gére via une ou plusieurs boucles imbriquées ou non et cela va dépendre de ton analyse préliminaire. Il y a des méthodes plus propres en passant par des classes mais ça ne change pas grand chose au principe de base.

Bon courage.

#4 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 14 March 2015 - 10:56 AM

Voir le messagedldler, le 12 March 2015 - 11:44 AM, dit :

Bonjour alpha_job.

Ton problème est un problème de géométrie avant d'être un problème de code.
Il faut que tu le résolves, au moins en français courant, avant d'attaquer le codage.

Comment vois-tu la résolution de ton problème ?

En français courant:
1. J'ai un tableau qui contient 4 objets. L'un joue le rôle de cogneur, les 3 autres jouent le rôle de cognés.
2. Le cogneur ne peut cogner qu'un carreau, le pousser selon qu'il l'a cogné à gauche, droite, au dessus ou en bas.
3. Si deux carreaux sont cognés, le cogneur ne peut pas les pousser.

#5 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 14 March 2015 - 10:58 AM

J'ai fait un programme en Haxe(pas très loin de ActionScript) https://www.dropbox....lision.rar?dl=0
Merci de bien vouloir m'aider à continuer.

#6 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6940 messages

Posté 15 March 2015 - 16:39 PM

Citation

1. J'ai un tableau qui contient 4 objets. L'un joue le rôle de cogneur, les 3 autres jouent le rôle de cognés.
2. Le cogneur ne peut cogner qu'un carreau, le pousser selon qu'il l'a cogné à gauche, droite, au dessus ou en bas.
3. Si deux carreaux sont cognés, le cogneur ne peut pas les pousser.

Voici l'algo qui découle de ton analyse :

A chaque pas du programme, parcourir le tableau pour tester les collisions.

Boucle sur tableau
identifier le cogneur
Si objet du tableau testé != cogneur
Boucle sur tableau (de nouveau)
Si objet testé déjà en collision avec un autre objet (voir formules de collisions, ref : collisions avec une grille et cercleAABB)
Vérifie le sens de la collision avec le cogneur
Si la collision est dans le même sens et (et axe) return
Sinon déplace l'objet dans le sens de la collision

A corriger ou affiner selon les besoins, je n'ai pas vérifié le fonctionnel.

Pour les formules, au risque de me répéter :
Pour les formules de collisions c'est ici : http://forums.mediab...iche_collisions
Pour le rendu (car il est nécessaire de séparer rendu et calculs), c'est ici : http://forums.mediab.../fiche_rendus2d

Pas de problème pour t'aider, mais il faut aussi lire les infos qu'on te donne.

#7 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 17 March 2015 - 12:32 PM

Pour les collisions, quelque chose comme ça ?
http://telflash.free.fr/collision/



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP