Я работаю над игрой, это мой первый раз ... Я столкнулся с проблемой, которую не могу решить сам.Давайте перейдем к преследованию, у меня есть класс монет, он тянет монеты только к одному телу box2D, но в этом слое (который я сделал в плитке) у меня есть еще 1 тело, но монета появляется только в 1 из них, последнийодин.Я хочу, чтобы текстура монеты появлялась во всех слоях объектов, которые я определил для монет. Я также опубликую изображение, чтобы лучше понять мой вопрос. Код и изображение для монеты приведены ниже;
Изображение: https://ibb.co/nAoYFq
public class Coin extends Sprite{
protected PlayScreen screen;
private Body body;
private BodyDef bodyDef;
private FixtureDef fixtureDef;
private PolygonShape polygonShape;
public Coin(PlayScreen screen, World world,TiledMap map) {
super(screen.getAtlas().findRegion("Gold"));
this.screen = screen;
this.bodyDef = new BodyDef();
this.fixtureDef = new FixtureDef();
this.polygonShape = new PolygonShape();
TextureRegion coinTexture = new TextureRegion(getTexture(),0,0,64,64);
setBounds(0, 0, 84 / trollVersusZombies.PPM, 84 / trollVersusZombies.PPM);
setRegion(coinTexture);
for(MapObject mapObject: map.getLayers().get(6).getObjects().getByType(RectangleMapObject.class))
{
Rectangle rectangle = ((RectangleMapObject)mapObject).getRectangle();
bodyDef.type = BodyDef.BodyType.StaticBody;
bodyDef.position.set((rectangle.getX() + rectangle.getWidth() / 2)/ trollVersusZombies.PPM, (rectangle.getY() + rectangle.getHeight() / 2) / trollVersusZombies.PPM);
body = world.createBody(bodyDef);
polygonShape.setAsBox(rectangle.getWidth() / 2 / trollVersusZombies.PPM, rectangle.getHeight() / 2 / trollVersusZombies.PPM);
fixtureDef.shape = polygonShape;
fixtureDef.isSensor = true;
body.createFixture(fixtureDef);
}
}
public void update()
{
setPosition(body.getPosition().x - getWidth() / 2, body.getPosition().y - getHeight() / 2);
}
}
К вашему сведению:
В моем основном классе игрового экрана я объявил и создал экземпляр своего класса монет для передачи соответствующих параметров, а метод обновления класса монет вызывается в методе обновления основного игрового экрана.class, также в методе рендеринга класса playscreen, я назвал coin.draw (playscreen.batch), то есть;
public void update(float dt) {
//Other code...
coin.update();
}
public void render(float delta) {
//Other Code
gameScreen.batch.begin();
coin.draw(gameScreen.batch);
gameScreen.batch.end();
}