Physique d'un objet mais sans collisions...

Bonjour à tous, voilà le topo : J’ai un projectile, il a une certaine physique, mais j’avais mis cette extension surtout pour avoir les projectiles qui retombent, mais étant donné que mon personnage balance des projectile en continu, les projectiles se bousculent, et je ne veux pas que ça n’arrive…

J’espère que j’ai été assez clair… Merci d’avance !

salut,

tu pourrais, plutôt que d’utiliser le moteur physique, ajouter à tes particules une seconde force (en plus de leur déplacement de base) qui les déplace vers le bas, avec un amortissement supérieur à 1 pour faire croire qu’elles tombent de plus en plus vite.

En tout cas, je ne crois pas que le moteur physique puisse ne pas considérer les collisions.

Déjà premièrement, ce ne sont pas des particules…
Après je pourrais leur ajouter une force vers le bas mais c’est très compliquer de reproduire exactement la gravité surtout qu’elle change énormément dans mon jeux…
J’espère tout de même que c’est faisable (et je pense que c’est faisable mais je ne sais pas comment).

La gravité consiste juste en une force qui tire l’objet vers le bas. Donc, c’est plutôt facile à faire.

Même avec une gravité choisie par le joueur et donc très variante ?

Que veux-tu dire par gravité variable ? Elle est susceptible de varier au cours du jeu ?

Dans ce cas, il suffit d’un événement sans condition avec une action ajoutant une force aux objets. Il faut bien mettre l’amortissement à 0 : la force sera exécutée qu’une seule frame avec la valeur actuelle (et sera aussi exécutée la frame suivant avec une éventuelle nouvelle valeur et ainsi de suite…).

Ou j’ai mal compris, ou tu n’as pas compris…
Je rappelle que ce que je voudrais obtenir serait : Le projectile lancé est affecté par la gravité avec des newtons qui varient, car la gravité change (le joueur choisi comment elle change…) mais les projectiles s’ignorent entre eux, ils ne seraient pas des obstacles les uns les autres.

Aussi… ce que je veux dire par variant, c’est que… Bon, je vais devoir expliquer le principe même du jeux même si c’est pas l’endroit. Le joueur peut créer un sort, ok. Il peut donc configurer vitesse, cooldown, taille du projectile, gravité, si le projectile rebondit, si le projectile adopte une trajectoire en vague, et par la suite je prévois même des changements de sort : invocation de mur, pluie de projectile, laser… (Je sais que ça va loin, très loin)

Voilà. Voilà pourquoi la gravité change, parce que le joueur choisi par combien de… (y’a pas d’unité je crois) est affecté le projectile… Et oui tout les sujets que j’ai ouvert récemment sont liés à ce jeu…

Ce que je te propose devrait marcher. Si la “gravité” est une variable des objets “projectile”, il faudra utiliser un événement “Pour chaque” pour affecter la gravité de chaque objet à chaque objet.

J’ai bien essayé de trouver le “pour chaque objet” mais cette condition ou action m’est complètement introuvable. J’ai regardé partout…

C’est un événement (clique sur “Autre” à la place de “Nouvel événement”).

Ca ne marche pas… Pas bien
Je m’explique :
Vitesse : 350
Gravité : 100
Le projectile s’en fout littéralement de la gravité

Vitesse : 350
Gravité : 600
Le projectile part directement vers le bas que ce soit en diagonale ou pas

Vitesse : 350
Gravité : 300
Si le projectile est tiré à l’horizontale, il aura tendence à descendre légérement vers le bas
Si le projectile est tiré vers le bas, vitesse doublé (logique)
Si le projectile est tiré vers le haut…, il va vers le haut ET NE RETOMBE PAS…

Donc dans certains cas la semi-gravité que tu m’as proposée, et quelque peu défaillante…

Voilà en pièce jointe un exemple fonctionnel (comme quoi mon explication n’est pas défaillante…).

Note : dans la réalité physique de notre monde, la gravité n’est pas censée être différente entre chaque objet (et tous les objets tombent à la même vitesse sans prendre en compte les frottements, seuls les frottements peuvent en ralentir certains et pas d’autres).
GraviteALaMain.zip (5.55 KB)

J’écris une réponse pendant que le nouveau Game Developp se télécharge… car en fait je savais pas qu’y avait un version antérieure… Par contre tu n’a pas compris que chaque projectile est affecté par la même gravité, pas par un diffèrente, c’est juste que en quelque seconde le joueur peut décider que la gravité soit diffèrente.

Note : du coup j’ai pas encore testé…
Edit : J’ai testé… tu aurais pu faire du omni-directionnel car la j’ai juste l’impression que tu fait un mouvement après l’autre surtout que je vois pas trop à quoi sert le random… en gros je comprend ta programmation

Suffit de changer les vitesse_horizontale et vitesse_verticale en fonction de la direction dans laquelle tu veux lancer le projectile.
Dans ce cas, lors de la création du projectile (vitesses initiales) :

vitesse_horizontale = VITESSE_INITIALE * cos(ANGLE_D_ENVOI_DU_PROJECTILE) vitesse_verticale = VITESSE_INITIALE * sin(ANGLE_D_ENVOI_DU_PROJECTILE)
(sachant que les angles sont orientés dans le sens des aiguilles d’une montre sur GDevelop, pas comme en maths)

C’est juste pour donner des “gravités” et des “vitesses” d’origine variable pour montrer différentes trajectoires.

[size=85]C’est impression ou tu te plains mon aide ? :confused: [/size]

Euh, j’dois avouer que des fois je m’exprime mal, de façon qu’on a l’impression que je suis un truc que je suis pas, Désolé si ça été ton impression.

Après j’ai vraiment l’impression que c’est compliqué pour rien… Je pensais peut être qu’il y’avait un moyen plus simple (peut être pas aussi simple que de mettre un évenement “Ignorer les collisions” mais plus simple que ce que tu as proposé… Voilà.

Après si il n’y a rien d’autre j’essayerai, mais tu vois j’suis en seconde… en terme de math en ce moment j’apprend, la trigonométrie c’est à dire que je suis pas encore au point avec ça… J’espère que tu comprend
Merci quand même.

Pas de soucis. :slight_smile:

Tu as testé ma proposition avec les cosinus et les sinus pour donner une “direction” de déplacement initiale à ton projectile ?

Non je n’ai pas testé car je m’y perd, très facilement. Même dans la programmation en général, plus y’a de formule compliquée, plus je m’embrouille et je ne sais même pas pourquoi.

Le problème est que le seul moyen de reproduire le comportement physique sans collision est d’appliquer la gravité à tes objets et donc d’utiliser des notions de physique comme le principe fondamental de la dynamique : https://fr.wikiversity.org/wiki/Dynamique/Lois_de_Newton

Perso je l’ai pas encore étudié, fin pas précisément ce qui signifie que je ne peux pas le faire… Il n’y aurait donc aucun autre moyen ? Parce que sinon je vais une millième demande d’ajout mineur (parce que je demande que deux petits évenements de plus). Quand est-ce que je vais arrêter de toucher à des éléments inexistant ?

up.gif parce que j’attend une réponse plus simple mais je vais bien finir par tester