Hola mis queridos sobrevivientes del fin del mundo, hoy estuve desarrollando el siguiente tutorial de Box2D en LibGDX estaba muy entusiasmado hasta que iba llegando al final cuando me di cuenta que no entendía mucho u_u , es que si no lo veo funcionando y lo malogro, no aprendo nada en programación, así que utilizando lo que aprendimos en el primer tutorial y mirando en la web, podemos crear el más basico de todos los ejemplos, una pelota rebotando:
public class box2dPrueba implements ApplicationListener { World mundo; Box2DDebugRenderer debugDelRenderizador; OrthographicCamera camara; static final float PASOS_CAJA=1/60f; static final int VELOCIDAD_ITERACION_CAJA=6; static final int POSICION_ITERACION_CAJA=2; @Override public void create() { camara = new OrthographicCamera(); camara.viewportHeight = 320; camara.viewportWidth = 480; camara.position.set(camara.viewportWidth * .5f, camara.viewportHeight * .5f, 0f); camara.update(); //Definimos el mundo mundo = new World(new Vector2(0, -100), true); //Definimos el piso BodyDef defCuerpoPiso =new BodyDef(); defCuerpoPiso.position.set(new Vector2(0, 10)); // posicion del piso Body cuerpoPiso = mundo.createBody(defCuerpoPiso); //Creamos el cuerpo del piso PolygonShape formaPiso = new PolygonShape(); //Definimos la forma del piso formaPiso.setAsBox((camara.viewportWidth) * 2, 10.0f); //Los vertices cuerpoPiso.createFixture(formaPiso, 0.0f); // Creamos el fixture //Cuerpo Dinamico (pelota) BodyDef defCuerpoPelota = new BodyDef(); defCuerpoPelota.type = BodyType.DynamicBody; //Cuerpo dinamico defCuerpoPelota.position.set(camara.viewportWidth / 2, camara.viewportHeight / 2); //Posicion del cuerpo Body cuerpoPelota = mundo.createBody(defCuerpoPelota); //Creamos el cuerpo de la pelota CircleShape formaCirculo = new CircleShape(); //Definimos la forma del circulo formaCirculo.setRadius(5f); // Definimos el tamaño FixtureDef defFixture = new FixtureDef(); // Definimos el fixture defFixture.shape = formaCirculo; // Le pasasamos la forma defFixture.density = 1.0f; // Le pasamos la densidad defFixture.friction = 0.0f; // Le pasamos la friccion defFixture.restitution = 1; //Le agregamos la restitucion cuerpoPelota.createFixture(defFixture); // Creamos el fixture debugDelRenderizador = new Box2DDebugRenderer(); //Para el debug de la renderizacion (las rayas que se dibujan) } @Override public void dispose() { } @Override public void render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); debugDelRenderizador.render(mundo, camara.combined); // con esto dibujamos las rayas mundo.step(PASOS_CAJA, VELOCIDAD_ITERACION_CAJA, POSICION_ITERACION_CAJA); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }
El código ya esta super explicado así que no creo que tengan problemas para entenderlo.
Suerte!
que versiones de jbox2d y libgdx estan usando????
No recuerdo bien pero debe haber sido el libgdx 0.9.4 y no se usa jbox2d, te recomiendo revisar tutoriales más básicos de LibGdx. Suerte!
Es excelente tu ejemplo. Gracias.
De nada ^_^
Suerte!
Excelente tutorial, tienes razón el código está muy bien explicado
Gracias, genial serte de ayuda! 😉