[Résolu] Explication du moteur physique ?

Bonjour, bonjour, cela faisait bien longtemps que je n’étais pas revenu voir ce logiciel qui ne me convenais qu’a moitié, et a ma grande surprise un nouvelle élément ma paru fort attirants : le moteur physique. J’ai donc exploré ce moteur mais cela fait depuis ce matin que j’y suis et je ne comprends toujours pas. C’est donc cela qui m’amène sur ce forum ou j’ai quelque questions a posée :

  • Déjà je ne comprends pas comment le moteur physique marche, j’ai voulu l’utiliser sur un projet vierge et je n’ai pas réussi ? Je voudrais donc si quelqu’un a le temps une petite explication sur son fonctionnement :wink:
  • J’ai ensuite regardé l’exemple pour essayer toujours de comprendre, je suis donc partis de cette exemple ou j’ai supprimé tous les événements pour me lancer un petit défit qui dois être simple pour plus d’un d’entre vous ^^.
    J’ai voulu faire bouger la boule noire grâce au flèches directionnels la tous va bien, après j’ai voulu la faire sauter ! Le saut s’effectue bien par contre si il entre en contacte avec un cube pendant le saut il arrive que la boule noir avance toute seul ensuite et c’est plutôt gênant, une solution ?
  • Toujours lors des sauts si je fais un saut sous l’objet Floors la boule traverse a moitié l’objet et tout pendant que la touche up est maintenu la boule reste « accrocher » a l’objet sa aussi c’est gênant ?
  • Enfin si je maintiens en continu la touche up la boule reste a 1 centimètre du sol or je voudrais quel retombe et recommence son saut ?

Sa fait beaucoup de questions et je vais passer pour un noob mais je n’ai vraiment pas réussis à résoudre mais problèmes tout seul :wink:

Voici les rares événements que j’utilise :

Et les objets :

Le moteur physique est implémenté grâce au nouveau concept d’automatisme, qui permettent de donner des comportements automatiques aux objets. Pour l’ajouter à un objet : Clic droit sur l’objet > Automatisme > Ajouter un automatisme. Tu peux ensuite éditer cet automatisme qui fera parti de l’objet en faisant Clic droit sur l’objet > Automatisme > “Nom de l’automatisme”.

Pour le reste, le problème vient que tu utilise les forces de Game Develop, et non pas les actions relative à l’automatisme Moteur physique. Si tu regarde bien la liste des actions et conditions, tu verra que tu as une nouvelle catégorie “Automatisme Moteur Physique” : Utilise les actions et conditions de cette catégorie afin de ne pas perturber l’automatisme.
Tu y trouvera notamment des actions pour faire bouger l’objet, avec l’aide du moteur physique donc.

[attachment=0]topic - physique.png[/attachment]
Voici une petite explication du paramètrage du moteur physique.
PS : Le vecteur de gravité est un paramètre global, c’est à dire qu’il affecte tous les objets qui ont le moteur physique. :wink:

Joli schéma, à noter que l’aide apporte des précisions sur tout ça dans la rubrique Création > Extensions et fonctionnalités integrées > Extensions officielles > Automatisme Moteur Physique ( et sur les automatismes en général dans le reste de l’aide ).

C’est un peu succinct comme explication sur le vecteur de gravité.
Tu ne précises pas que c’est un point sans unité particulière, on ne peux pas trop comprendre son fonctionnement… :wink:

Ps : “Aide de Game Develop” n’est pas un membre du forum :laughing: (oui, bon, c’était pas drôle, je me tais…) :laughing:

Merci beaucoup c’est vraiment très intéressent et sa me donne pleins d’idées, par contre je ne maitrise vraiment pas encore.
Vos explications répondes a la plus parts de mes questions seulement sa va paraitre plutôt bête mais j’ai modifié les actions pour déplacer mon perso or voila maintenant quand je vais a droite ou a gauche la force se fait en continue et mon perso ne s’arrête plus jamais ?

Montre tes évènements, normalement les forces ne sont pas appliquées en continue.

Alors voici les events ainsi que les automatisme de la boule et je crois que c’est la que ça merde ><


Ne tenez pas compte de la case rectangle coché c’était pour u teste mais même avec cercle de cocher ça merde :wink:

J’ai ouvert l’exemple PhysicsCrush, ajouté deux évènements comme les tiens à l’objet BlackSphere, et j’arrive bien à contrôler les billes noirs avec les flèches gauche et droite, il n’y a pas de problème de force qui ne s’arrêtent pas ( Il y a un temps d’accélération et de décélération bien sûr, mais c’est normal ).
Êtes tu sûr que tu as mis de la friction au sol ? Essaie directement dans l’exemple PhysicsCrush sinon.

Par contre, si tu utilise le moteur physique pour déplacer un objet “en vue de dessus” ( avec la gravité à 0;0 donc ), il vaut mieux gérer soi même l’arrêt du personnage : Regarde l’exemple 3DEngineWithPhysics.

Oui c’est bien de cela que je parle et y a t’il moyen de supprimer ce temps ?

Dans ce cas, pense déjà à mettre la forme de l’objet à bouger comme Rectangle. Fixe aussi la rotation de l’objet pour éviter que ton rectangle ne “bascule” ( Je suppose que ton objet Héros n’est pas sensé tourner ).
Ensuite, tu peux gérer toi même la vitesse de ton objet en X pour avoir un temps de décéleration plus rapide ( bien qu’en utilisant un rectangle, ça devrait déjà être mieux ) : Ouvre l’exemple 3DEngineWithPhysics, et copie le dernier évènement dans ton jeu. Modifie le pour avoir quelque chose du genre ) :

Mettre la vitesse Linéraire de Heros à Heros.Physics::LinearVelocityX() * 0.9 ^ ( TimeDelta()*60 );Heros.Physics::LinearVelocityY().

Avec ça, tu laissera la vitesse en Y normale, mais tu diminuera plus vite la vitesse en X.

Sa marche très bien merci une dernière chose après promis j’arrête mes questions :slight_smile:
Comme tu dois t’en doutais je vais aussi programmer des saut pour mon personnage, a tu des conseilles pour optimiser au mieux les saut avec le moteur physique ? Et est il possible de faire en sorte qu’une fois la touche saut activer ( ou appuyer pour être plus claire ) il faille attendre que le personnage touche le sol avant de pouvoir refaire un saut, en bref je voudrais pas qu’en restant appuyer sur la touche le personnage fasse pleins de petit sauts mais la je suis pas claire a mon avis ? Brefs j’attends des conseille pour réussir des sauts un peut mieux :wink:

Et merci pour les réponses.

Tu peux utiliser une variable que tu mets à 1 quand on appuie sur le bouton de saut.
Ajoute une condition qui empêche le saut lorsque la variable est différente de 0.
Et lorsqu’il retouche le sol, tu remets cette variable à 0.

Au risque de paraitre bête quel condition peut empêcher le saut ?

J’ai fait différent testes et je n’arrive pas a avoir un résultat mieux que celui si :
mediafire.com/?7q51jj0b34qu9b8

La condtion : tu testes la valeur de la variable !

J’ai pas eu beaucoup de temps à moi pour vous répondre et je m’en excuse. Grace a votre aide et a l’aide de BigMiniGame j’ai enfin compris comment faire pour faire des sauts correctes. Encore merci