SlandShow
@SlandShow
70% of my body is made of movies.

Почему не выходит создать Body через другой класс?

Всех приветствую.

Проблема заключается в том, что я никак не могу создать 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);


То все заработает.

Что я делаю не так и почему ничего не выходит?
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
А где обновление физики? Где .dispose() шейпа который после передачи в фикстуру уже ненужен? Самое главное, где Exception? Телепаты в отпуске.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы