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.
}
}