Rebonds et Spawn avec force et angle aléatoire

Salut ^^ j’ai un projet assez simple en tête . Des ennemis spawn au dessus de l’écran toute les 0.5 sec mais je voudrais que mes ennemis spawn avec une force(qui augmente au cours de la partie) et un angle aléatoire . (Pourquoi ? Tout simplement parce que je n’ai pas envie de faire un Shoot’em Up avec des ennemis qui tombe tranquille a 90°). A droite et a gauche de l’écran se situerons des barrières. Pour l’instant on va dire pas de problème … ( sauf avec la force random )et c’est la que le gros problème arrive !! Je n’arrive pas a crée des rebonds basiques. Je voudrais que si une balle est envoyé a 30° , qu’elle touche une barrières , qu’elle rebondis avec la force et l’angle équivalent ( angle de la réflexion xD) Si vous avez une idée de comment procéder aidée moi svp ^^ :smiley: :smiley: :smiley:

Je pense que les rebonds peuvent être gérés avec le moteur physique :wink:

Pour essayer d’être simple, si tu ne veux pas utiliser le moteur physique, il n’y a pas beaucoup de code à rajouter.

En voici un exemple si un objet tape contre le mur du haut (désolé si c’est pas le mur qui t’intéresse, je tire ça d’un pong que j’ai fait il y a deux ans, c’est plus très frais dans ma tête ^^ je t’explique après comment l’adapter à ton projet).

Si objet.X() <= 1 :
Faire = objet.ForceAngle() à la variable ancienangle
faire = objet.ForceLength() à la variable anciennevitesse
Arrêter l’objet objet
Ajouter à objet une force de d’angle Variable(ancienangle)*-1 et de longueur Variable(anciennevitesse)

Il faut faire 4 évènements différents pour les 4 murs de l’écran. Je t’assure, ça marche et c’est pas compliqué :smiley:
Pour ton mur de gauche, par exemple. Prends une feuille, trace un cercle dessus et fais un + dedans pour représenter l’endroit où ton objet va taper sur le mur. Rappelle toi que le 0° de GDevelop est à droite, donc si ton objet tombe du haut vers le bas, il va taper le mur avec un angle valant entre 90° et 180°, et il doit en repartir avec un angle valant entre 1° et 90°.

Définissons ensuite la relation liant les deux : si l’angle est de 91° au moment où il touche le mur (soit quasiment droit vers le bas, décalé d’1 pixel vers la gauche de l’écran pour toucher le mur gauche), il devra repartir avec un angle de 89° (droit vers le bas, décalé d’1 pixel vers la droite). Je ne suis pas sûr de cette relation, mais de tête il semblerait que ce soit angledesortie = 90- (angledentree-90). Si c’est pas tout à fait ça, cherche sur ton papier… tu te rendras compte que c’est plus simple que ça en a l’air, et mieux, la formule est presque réutilisable en l’état pour les autres murs (juste un petit 180° ou un - à ajouter :smiley: )

Bon courage :wink: