Premièrement, je me demande comment gérer des objets dont la gravité ne serait pas le seul propos. Par exemple, pour un mario bros (oldschool) autant le sol serait un solidet, mais les tiles/plateformes sur lesquels on saute ? si on en fait des solide ils vont tomber ?
Non, ils ne vont pas tomber, si tu en fais des objets statiques, ils restent là où ils sont, ils ne sont pas soumis à la gravité.
Peut-on ajouter des interactions autre que le contact ? par exemple une porte, qui nécessite une clef, à la collision, peut-on sortir (callback) du moteur pour savoir si on ne passe pas la porte ou bien si ca passe (on ouvre la porte), idem pour les bonus peut-on faire en sorte que la collision avec celui-ci fasse une action (le prendre).
Le moteur physique n'est qu'un élément du jeu. Donc, il y a une partie de la logique du jeu qui sera en dehors. Pour ton exemple avec la porte et la clef, je vois deux solutions : premièrement, tu peux créer la zone qui capte uniquement quand tu as récupéré la clef, ce qui fait qu'avant, tu ne peux pas passer ; deuxièmement, avec Box2D, tu peux créer un listener quand un objet entre en contact avec un autre, il suffit alors, dans ton listener de tester si tu as la clef. Pour ton bonus, c'est pareil, un petit listener et hop.
et si je veux faire un ennemie qui marche aux murs/ aux plafonds (une araignée)
Là, je dois dire que tu me pose une colle. Je pense que c'est possible, il suffit d'appliquer une force contraire à la gravité en permanence mais je n'ai jamais essayé ni vu de choses à ce sujet.
Deuxième remarque (qui est un peu le corolaire de la première, vu la complexité à sortir du modèle) j’ai un peu peur que de nombreux jeux basé sur un tel moteur 2d, ne soit rien de plus qu’un jeu de physique.
Ou pas. Dans tous les jeux, tu dois gérer des collisions avec les éléments du décor. Tu peux le faire à la main pour des cas simples, mais dès que le jeu devient un poil complexe, tu te retrouves à réinventer la roue. Et là, tu découvres qu'un moteur physique, ça fait déjà tout et sans doute mieux. Et ça ne veut pas dire que ton jeu est basé sur la physique, juste que tu délègues cette partie à une bibliothèque qui le fait mieux que toi. Box2D a l'air suffisamment flexible pour traiter un grand nombre de situations (en tout cas, je ne me sens pas limité pour l'instant) donc, ce n'est pas vraiment un frein. Si jamais ça arrive, j'en ferai part dans un prochain article.
[^] # Re: de la phy 2d
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E04 : Paf ! les collisions. Évalué à 7.
Non, ils ne vont pas tomber, si tu en fais des objets statiques, ils restent là où ils sont, ils ne sont pas soumis à la gravité.
Le moteur physique n'est qu'un élément du jeu. Donc, il y a une partie de la logique du jeu qui sera en dehors. Pour ton exemple avec la porte et la clef, je vois deux solutions : premièrement, tu peux créer la zone qui capte uniquement quand tu as récupéré la clef, ce qui fait qu'avant, tu ne peux pas passer ; deuxièmement, avec Box2D, tu peux créer un listener quand un objet entre en contact avec un autre, il suffit alors, dans ton listener de tester si tu as la clef. Pour ton bonus, c'est pareil, un petit listener et hop.
Là, je dois dire que tu me pose une colle. Je pense que c'est possible, il suffit d'appliquer une force contraire à la gravité en permanence mais je n'ai jamais essayé ni vu de choses à ce sujet.
Ou pas. Dans tous les jeux, tu dois gérer des collisions avec les éléments du décor. Tu peux le faire à la main pour des cas simples, mais dès que le jeu devient un poil complexe, tu te retrouves à réinventer la roue. Et là, tu découvres qu'un moteur physique, ça fait déjà tout et sans doute mieux. Et ça ne veut pas dire que ton jeu est basé sur la physique, juste que tu délègues cette partie à une bibliothèque qui le fait mieux que toi. Box2D a l'air suffisamment flexible pour traiter un grand nombre de situations (en tout cas, je ne me sens pas limité pour l'instant) donc, ce n'est pas vraiment un frein. Si jamais ça arrive, j'en ferai part dans un prochain article.