我试图在我的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();
}
答案 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();
}