LibGDX测试矩形的碰撞

时间:2015-08-05 16:16:08

标签: java android libgdx

我试图在我的Java 2D游戏上绘制矩形来表示用作我的精灵边界的不可见矩形。

此代码位于render()类中的PlayState方法中,由于某种原因,它会删除我在屏幕上绘制的所有纹理。 下面代码中的Shape是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数学实用程序类。

这是我的render()方法:

@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();
}

1 个答案:

答案 0 :(得分:0)

尝试使用ShapeRenderer代替BatchSprite。我不认为用BatchSprite绘制矩形是可能的。尝试这样的事情(在你的渲染方法中):

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