Bonjour, cher utilisateur habr.com! Ceci est le troisième article sur le sujet. Je travaille toute la journée, je ne peux pas m'arracher à l'incroyable bibliothèque Box2D.
Si vous n'avez pas lu les
premier et
deuxième articles, regardez bien, ce sera amusant! Je travaille dans
Eclipse , j'écris en Java. Pourquoi ai-je appelé mon article ainsi? Lisez la suite - et très bientôt tout deviendra clair! Spoiler: nous ferons notre propre machine à mouvement perpétuel (y compris pour les voitures), et, peut-être, nous créerons la machine elle-même!
Figure 1. Machine à mouvement perpétuel.
Donc, aujourd'hui, nous allons essayer d'obtenir quelque chose comme ça:
Figure 2. Machine avec moteur.
Oui, ce n'est pas une faute de frappe! Aujourd'hui, nous allons fabriquer une machine avec un vrai moteur, elle sera indiscernable du vrai! Ce n'est pas le «panier» pour vous du
premier article.
Pour connecter
libGDX, consultez le
premier article.
Voici une image montrant à quoi ressemble mon assemblage. J'ai ajouté le package Utils avec la classe Constants au dossier Core, qui ne contient qu'une seule constante - le nombre de pixels par mètre. C'est ainsi que le monde n'est pas gigantesque.
Figure 3. Ma version.
Voici le code de la classe DesktopLauncher de com.mygdx.game.desktop:
Collez ce code dans la classe et oubliez-le.package com.mygdx.game.desktop; import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; import com.mygdx.game.MyGdxGame; public class DesktopLauncher { public static void main(String[] arg) { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
Le code suivant pour la classe MyGdxGame provient du package com.mygdx.game. Tout est dans les commentaires du code.
Nous créons le monde et la machine. package com.mygdx.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; import com.badlogic.gdx.physics.box2d.CircleShape; import com.badlogic.gdx.physics.box2d.FixtureDef; import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef; import utils.Constants; public class MyGdxGame extends ApplicationAdapter { private OrthographicCamera camera; private boolean DEBUG = false; private World world; private Box2DDebugRenderer b2dr;
Figure 4. Qu'obtenons-nous lors de la compilation?
Nous créons notre voiture un moteur qui fait tourner ses roues. Mais cela fonctionne pour toujours, car il n'y a pas de pertes d'énergie. Ainsi, nous créons notre machine à mouvement perpétuel!
Et vous vous demandez ce qu'il y a à la fin du niveau? Envoyez des captures d'écran dans les commentaires au fur et à mesure. Merci d'avoir lu l'article jusqu'au bout! J'espère que vous pourrez créer votre propre voiture dans Box2D!
PS J'attends vos questions avec impatience dans les commentaires! Vive la physique du jeu!