Pour m’entraîner je pars du petit jeu de plateform fourni avec Game Develop. J’ai rajouté un ennemi (le Slime rose) et fait en sorte qu’il fasse demi tour quand il rencontre un élément de PF.
Quand j’ai voulu rajouter un ennemi de type Slime Rose, en le copiant, ça n’a plus fonctionné comme je le souhaitais. En effet, le premier Slime fait demi tour, en même temps que le deuxième, si l’un ou l’autre rencontre une PF.
N’y a t’il pas un moyen pour que les copies d’ennemis ai tous un comportement indépendant, en respectant les même conditions (“si tu rencontres un mur, fait demi tour”) que les autres Slime.
Ou dois-je creer autant de bout de code que d’ennemi dans le jeu ??
Je pux peut-être t’aider pour ce point. Ah tu testés l’option “pour chaque objet”. Cela te permetra de le faire pour chaque sprite présent dans le jeux. Je te garantie rien, mais je pense que sa peux t’aidé.
Les évènements sont appliqués de façon indépendantes aux objets.
Si ce n’est pas le cas, c’est que tu n’a pas mis de condition permettant de différencier ces objets : Affiche tes évènements pour qu’on voit.
J’avais un soucis pour que le Slime se retourne sans bugger avec la collision, d’où la création de la variable “a” … Je pense que vous comprendrez rapidement d’où provient mon erreur, mais personnellement je sèche
J’ai tenté de faire autrement pour que le Slime qui rencontre un bout de Plateforme parte dans la direction opposé, mais pas moyen, il reste bloqué dans le décor xD
Toujours le même problème du coup sur la copie d’ennemi…
Ce que tu pourrais faire, c’est mettre une variable “distance” dans l’objet SlimeRose.
Tu la décrémentes pendant le mouvement, et une fois à zéro, tu fais repartir le sprite dans l’autre sens et tu remets distance à sa valeur première (avec une autre variable de l’objet, distanceMax).
Comme ça, plus besoin de collision avec des marques invisibles. Et ça devrait résoudre ton problème de mouvement simultané avec plusieurs objets identiques.
En fait, je souhaiterai que les slimes se comportent “intelligemment” :
Au lancement de la scène, les Slimes avancent
Si un Slime rencontre un mur (Plateform), il part dans la direction opposée
Le problème que j’ai, c’est que des qu’un slime rencontre un mur, il fait demi tour, mais du coup tous les autres slimes font demi tour aussi …
La distance avec le slime et une plateforme peut etre variable, en fonction de la position de départ du slime, du coup, mettre un compteur ne réglera pas mon problème.
A moins que je n’ai pas saisi ce que tu voulais dire
La solution était effectivement d’utiliser les variables d’objet et non de scene.
J’ai donc créé la variable “a” pour gérer le retournement et la variable “SlimeSpeed” pour gérer la vitesse du slime.
Si nombre d’objets Slime > 0
– faire -1 à la variable d’objet Distance
---- si la variable Distance de l’objet Slime <=0
-----------faire Slime.Variable(DistanceMax) à la variable Distance
---------- faire * -1 à la variable Tourne de l’objet Slime
– appliquer une force de xx*Slime.Variable(Tourne) pixels à l’objet Slime
On s’en fiche que le slime se coince contre une plateforme. L’important, c’est qu’il tourne tout seul au bout d’un moment.
A toi de le faire apparaitre au bon endroit pour qu’il parcourt la bonne distance.
Tu peux alors créer plusieurs slimes, chacun avec une DistanceMax différente, afin de les faire tourner à des moments différents, selon l’espace que tu veux leur faire patrouiller.