[英]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.