繁体   English   中英

LibGDX测试矩形的碰撞

[英]LibGDX test rectangles for collision

我正在尝试在Java 2D游戏中绘制矩形,以表示用作精灵边界的不可见矩形。

这段代码位于PlayState类的render()方法中,由于某种原因,它会擦除​​我绘制到屏幕上的所有纹理。 下面代码中的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();
}

尝试使用ShapeRenderer代替BatchSprite 我认为用BatchSprite绘制矩形是BatchSprite 尝试这样的事情(在您的render方法中):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM