2015-08-05 4 views
0

Я пытаюсь рисовать прямоугольники на своей Java 2D-игре, чтобы представить невидимые прямоугольники, используемые в качестве границ для моих спрайтов.Прямоугольные теги LibGDX для столкновения

Этот код находится в моем методе render() в классе PlayState, и по какой-то причине он удаляет все текстуры, которые я нарисовал на экране. Форма в приведенном ниже коде является объектом класса ShapeRenderer.

shape.begin(ShapeRenderer.ShapeType.Line); 
shape.setColor(1, 1, 0, 1); 
shape.rect(bird.getLeftBird().getPosLeftBird().x, 
    bird.getLeftBird().getPosLeftBird().y, 35, 40); 
shape.end(); 

Есть ли способ использовать метод BatchSprite draw() для рисования прямоугольников?

Я использую класс утилиты математики BadLogic.

Вот мой метод визуализации():

@Override 
public void render(SpriteBatch sb) { 
    sb.setProjectionMatrix(cam.combined); 
    sb.begin(); 
    sb.draw(bg, cam.position.x - (cam.viewportWidth/2), cam.position.y- (cam.viewportHeight/2)); 
    sb.draw(diamond.getTexture(), diamond.getPosition().x, diamond.getPosition().y); 

    for (int i = 0; i < birds.size; i++) { 
     Bird bird = birds.get(i); 
     if (bird.getId() == 0) { 
//    shape.begin(ShapeRenderer.ShapeType.Line); 
//    shape.setColor(1, 1, 0, 1); 
//    shape.rect(bird.getLeftBird().getPosLeftBird().x, 
//      bird.getLeftBird().getPosLeftBird().y, 35, 40); 
//    shape.end(); 
      sb.draw(bird.getLeftBird().getLeftBird(), bird.getLeftBird().getPosLeftBird().x, bird.getLeftBird().getPosLeftBird().y); 
     } else { 
      sb.draw(bird.getRightBird().getRightBird(), bird.getRightBird().getPosRightBird().x, bird.getRightBird().getPosRightBird().y); 
     } 
    } 
    sb.end(); 
} 
+0

Показать весь метод визуализации. Что-то не так, если ваши спрайты не появляются только из-за средства визуализации фигуры. – Tenfour04

+0

@ Tenfour04 Я добавил метод визуализации. Благодарю. –

+0

Вы, вероятно, беспорядочно загружаетесь, пытаясь сделать рендеринг с помощью рендеринга фигур между вызовами начала и конца spriteBatch. Кроме того, перед обработкой чего-либо вы должны вызвать Gdx.gl.glClear в методе визуализации. – Tenfour04

ответ

0

Попробуйте использовать ShapeRenderer вместо BatchSprite. Я не думаю, что можно рисовать прямоугольники с BatchSprite. Попробуйте что-нибудь подобное (в вашем методе визуализации):

public void render() { 
    // Rest of your code 
    // ... 
    shapeRenderer.begin(ShapeRenderer.ShapeType.Line); 
    shapeRenderer.rect(xpos, ypos, width, height); 
    shapeRenderer.end(); 
} 
+0

Извините, я добавил немного больше текста. Я использовал «ShapeRender», и именно это привело к исчезновению всех моих других объектов. Я отредактировал, чтобы объяснить это лучше и показал класс рендеринга. –

Смежные вопросы