Collision avec particule et information ID

Bonjour, j’aimerais savoir si il est possible de mettre une collision avec les particules (c’est à dire par rapport par exemple à la taille définie pour mon explosion).
Le but étant que si quelque chose se trouve dans l’explosion alors on déclenche un évènement.

Une autre question j’ai lu sur plusieurs posts l’association d’objet à un ID, comment cela se fait t’il ?
Merci

Regarde plutôt de l’extension Association d’objets, qui permet d’associer deux ( ou plusieurs ) objets entre eux.
Ensuite, quand un des objets ( Par exemple Missile ) en question sera concerné par une condition ( Par exemple Missile en collision avec Tank ), tu pourra récupérer les objets associés par une condition ou une action “Prendre en compte les objets associés à Missile et nommés Tank”.

Les particules ne définissent pas de cadre de collision. Tu peux néanmoins estimer l’amplitude de ton explosion et utiliser la condition pour vérifier si la distance entre un objet et l’explosion est inférieur à cette amplitude.

Pour l’association j’avoue que je ne comprend pas encore bien le fonctionnement il faudra que je vois (je voulais pouvoir donner des ID a certain objet de ma scène pour les différencier)

Pour ce qui est de la collision je souhaite qu’une fois que mon explosion touche un mur par exemple elle n’aille pas au mur suivant et qu’elle disparaisse aussi si elle a atteins une certain “distance”, pour l’instant la seule solution que j’ai trouvé est de créer quatre images de mon explosion (dans le genre d’un tir) d’y attribué une force et de la faire disparaitre si elle est trop loin de l’objet de départ (j’ai encore quelque petits souci avec la force car il faudrait que cela soit quasi instantané hors la il y a un léger décalage)

Le souci c’est que cela fait beaucoup de condition (4 images avec 4 force appliqué etc) surtout que je souhaite mettre tout ca en réseau :slight_smile: )
Il y a t’il un moyen plus simple ou suis je sur la bonne voie ?

Pour une raison inconnu GD plante assez régulièrement (lors des collisions) quand je test ma scène(j ai envoyé le rapport au mail indiqué).

Plante au niveau de la compilation ou il plante complètement et se ferme ?
Tu peux nous montrer tes événements (c’est sûrement un bug de GD dû à une combinaison d’événements particulière).

il se plante et ferme la compilation marche, c’est en effet du à mes événements vu qu’en les déplaçant ça ne le fait plus-, à priori c’est parce que j’ai mis deux choses incompatibles :

  • événement principal (grosso modo cela donnait ça je n’ai pas le projet sur moi la) : si tir est éloigne de plus de 100 de joueur alors supprimer tir
    et en sous événement de cet événement la : si tir entre en collision avec un mur alors supprimer tir
    en y réfléchissant effectivement il ne peut pas être à plus de 100 et après toucher un mur mais bon :slight_smile:

Attention : un sous-évènement utilise les conditions de son évènement parent pour déterminer quels objets sont concernés.

Si j’ai bien compris ton algo, tu demandes à GD de supprimer le tir s’il est trop loin, et ensuite tu lui demandes de vérifier si ce même tir touche un mur (et ensuite de le supprimer à nouveau).

Dans ton cas, tu devrais plutôt avoir trois évènements séparés :

Si tir touche mur alors flux de particules = 0
Si tir.distance(joueur) >= 100 alors flux de particules = 0
Si particules n’émet plus de particules alors particules.destroy

L’intérêt de jouer sur le flux de particules est de faire disparaitre progressivement l’émetteur, en l’empêchant de créer de nouvelles particules, au lieu de tout supprimer brutalement.

Pour l’association d’objet, il s’agit de créer un lien entre deux objets (parent-enfant si tu connais Blender). A partir d’un objet précis, on retrouve l’objet qui lui est lié.

Dans le cas de Tir, associé avec l’objet Particules, tu pourrais avoir 500 tirs à l’écran, chacun aurait un Particules qui suivrait son Tir grâce à cet évènement (de mémoire) :
Pour chaque objet Tir
–>si Tir est associé à Particules
---->Particules.x = Tir.x
----> Particules.y = Tir.y

En effet il me faut des événements separé mais existe t’il un moyen de faire :
si tir.distance(objet) > 100 alors suppression tir par exemple, mais en prenant l’axe X et y pour l’objet.
Je m’explique, en l’occurrence dans mes conditions j’ai :

ajouter a tir une force sur l’axe X (je n’ai plus la syntaxe devant moi)
ajouter a tir une force sur l’axe X en négatif
ajouter a tir une force sur l’axe Y
ajouter a tir une force sur l’axe Y en négatif

si position tir1.X()+50 > joueur.X() alors suppression tir
si position tir2.X()-50 < joueur.X() alors suppression tir
si position tir3.Y()-50 < joueur.Y() alors suppression tir
si position tir4.Y()+50 > joueur.Y() alors suppression tir

ce qui me permet de vu que je vais créer un tir qui part dans 4 directions de supprimer ces 4 tirs , mais n’existe t’il pas un moyen plus simple car tout mes événements sont répéter plusieurs fois (et comme je compte rajouter un joueur en réseau cela risque de faire beaucoup de variable).

Pour l’association d’objet si j’ai bien compris dans mon cas par exemple on va associer tir à particule mais comment utilise t’on ça dans les conditions ?
Si tir est supprimer alors particule est supprimé automatiquement ? (si je déplace tir la même chose se produit pour particule ?)

Pour le plantage, le meilleur moyen serait de m’envoyer le jeu qui pose soucis pour que j’essaye de reproduire le problème chez moi et debugger ça, si tu le souhaite bien sur.
( Dans le meilleur des cas, si t’arrive à isoler le problème dans le jeu en question, ça peut beaucoup m’aider. Si t’arrive à compiler un jeu qui plante, ça peut aussi m’être utile ).

Ok je viens de de reproduire le ‘bug’ je vais t’envoyer le projet (ne prend pas peur surtout pour la partie réseau je n’ai pas encore tout compris ça risque de piquer les yeux :wink: )

Le jeu que je t’envoi est bugger, je te met le commentaire à l’endroit en question (bien sur c’est une condition impossible à réalise que j’avais mis comme dit plus haut)

Ok, je regarderai le jeu dès que je le recevrai :slight_smile:

Non pas du tout, l’association est “virtuelle”, elle ne sert qu’à retrouver un objet à partir d’un autre.
Mais il n’est pas dur de faire correspondre des destructions avec ce système par exemple, ou changer la position d’un objet :

[code]Conditions : Au lancement de la scène
Tourelle est en collision avec Tank
Actions : Associer Tourelle et Tank

Conditions : Collision entre Tank et Missile
Actions : Prendre en compte les objets nommés Tourelle associés à Tank
Supprimer Tank
Supprimer Tourelle

Pour chaque objet Tank
Conditions : Aucune
Actions : Prendre en compte les objets nommés Tourelle associés à Tank
Faire =Tank.X();Tank.Y() à la position de Tourelle[/code]

Je ne dois pas avoir de chance je viens de tester l’association d’objet et ça m’as fait planter le jeux :slight_smile:
Bon j’ai refait après et ça marche cette fois c’est très pratique en effet, on peut lier un objet à plusieurs objet ou ça risque de posé un souci ?

petite parenthèse qui n’as rien à voir mais il est possible grâce au copier coller d’autre jeux d’ajouter des événements dont on n’as pas l’extension un avertissement pourrait être utile j’ai chercher pendant 10mn pourquoi ma boite de dialogue ne s’afficher pas (elle s’afficher bien en test de scène mais pas dans la version compilé) :smiley:

Quel est la configuration de ton ordinateur ? J’ai testé le jeu que tu m’a envoyé, et j’ai pas réussi à le faire planter chez moi.

Windows xp
carte mère Asus
NVDIA GEFORCE 8600 GTS
Intel® Core™2 Quad Processor Q6600) 2.4 Ghz

ca plante aussi sur un autre ordinateur que j’ai mais je n’ai pas la config sous la main
j’essaierai de tester sur un 7 demain.