Всех приветствую.
Проблема заключается в том, что я никак не могу создать
DynamicBody с помощью другого класса.
У меня есть класс
Player:public class Player extends Sprite {
public World world;
public Body b2body;
public Player(World world) {
this.world = world;
definePlayer();
}
// create player
public void definePlayer() {
BodyDef bdef = new BodyDef();
bdef.position.set(32 / MyGdxGame.PPM, 200 / MyGdxGame.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
b2body = world.createBody(bdef);
FixtureDef fdef = new FixtureDef();
CircleShape shape = new CircleShape();
shape.setRadius(5 / MyGdxGame.PPM);
fdef.shape = shape;
b2body.createFixture(fdef);
}
}
И в главном классе я это запускаю таким образом:
world = new World(new Vector2(0, -10), true);
player = new Player(world); // create player
Ну и дальше все прекрасно само рендерится:
// clear game screen
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// render game map
render.render();
// render box2dbodies
b2dr.render(world, gameCam.combined);
// set batch to draw camera
MyGdxGame.batch.setProjectionMatrix(hud.stage.getCamera().combined);
hud.stage.draw();
Пытаюсь, значит, провернуть тот же трюк с классом
Enemy, но не тут то было. Ничего вообще не работает.
А самое интересное, что если по отдельности в главном классе написать вот это:
BodyDef bdef = new BodyDef();
bdef.position.set(32 + 10 / MyGdxGame.PPM, 200 + 10 / MyGdxGame.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
super.b2body = super.world.createBody(bdef);
FixtureDef fdef = new FixtureDef();
CircleShape shape = new CircleShape();
shape.setRadius(20 / MyGdxGame.PPM);
fdef.shape = shape;
super.b2body.createFixture(fdef);
То все заработает.
Что я делаю не так и почему ничего не выходит?