studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones libgdx box2d

libgdx - reales - Cómo cambiar el tamaño después de haber sido creado



libro de android studio en español pdf (1)

La mejor (probablemente la única) forma de hacerlo es destruir todo el dispositivo y redefinirlo. Como tu jugador solo tiene un accesorio, o haces un seguimiento para eliminarlo o simplemente haces esto:

this.getBody().destroyFixture(this.getBody().getFixtureList().first());

A continuación, simplemente recrear una forma simple en el cuerpo ya existente:

PolygonShape shape; FixtureDef fdef; // Create box shape shape = new PolygonShape(); shape.setAsBox(100 / PPM, 100 / PPM); // Create FixtureDef for player collision box fdef = new FixtureDef(); fdef.shape = shape; fdef.filter.categoryBits = Constants.BIT_PLAYER; fdef.filter.maskBits = Constants.BIT_GROUND; // Create player collision box fixture this.getBody().createFixture(fdef).setUserData("player"); shape.dispose();

Estoy usando java, libgdx y box2d

En la clase principal, he creado un jugador. Quiero cambiar shape.setAsBox a 100 en la clase de jugador. Entonces, en otras palabras, quiero cambiar shape.setAsBox después de haber sido creado. Creo que la única forma de hacerlo es eliminar el accesorio y recrear uno nuevo con un tamaño de 100. Cómo puedo hacer esto.

public class main{ ... public main(){ //create player BodyDef bdef = new BodyDef(); Body body; FixtureDef fdef = new FixtureDef(); PolygonShape shape = new PolygonShape(); /***Body - Player ***/ bdef.type = BodyType.DynamicBody; bdef.position.set(50 / PPM, 50 / PPM); bdef.linearVelocity.set(1.5f, 0); body = world.createBody(bdef); /*** 1st fixture ***/ shape.setAsBox(50/ PPM, 50 / PPM); fdef.shape = shape; fdef.filter.categoryBits = Constants.BIT_PLAYER; fdef.filter.maskBits = Constants.BIT_GROUND; body.createFixture(fdef).setUserData("player"); player = new Player(body); } .... public void update(float dt) { playerObj.update(dt); ... } }

// playyer class

public class player{ public player(Body body){ super(body); } .... public void update(){ //get player x position currentX = this.getBody().getPosition().x; // how can I delete old fixture and recreate a new one? // which will has shape.setAsBox = 100. } }