如何用Rectangle擦除纹理的某些部分?

时间:2017-10-25 04:24:45

标签: java libgdx

我有一个需要在某些游戏点擦除的纹理。我认为最好用图片来澄清我的问题。

下面是实际纹理。

enter image description here

添加到舞台后,它是演员内部并在画面内调用。 下面是纹理的部分代码

@Override
public void draw(Batch batch, float parentAlpha) {

    super.draw(batch, parentAlpha);

    batch.draw(trLine,position.x,position.y);

}

我想使用带有x,y,width和height的矩形擦除纹理的某些部分。它也可以多次使用。我如何实现这一目标?

补充:我发现一篇文章使用pixmap加载纹理并使用mask修改它。下面是代码,但不幸的是,它什么都没有。

    Pixmap mask = new Pixmap(trLine.getRegionWidth(), trLine.getRegionWidth(), Pixmap.Format.Alpha);

    mask.setBlending(Pixmap.Blending.None);
    mask.setColor(0,0,0,0);
    mask.fillRectangle((int)rec.x,(int)rec.y,(int)rec.width,(int)rec.height);

    Pixmap fg = new Pixmap(trLine.getRegionWidth(), trLine.getRegionWidth(), Pixmap.Format.RGBA8888);

    for (int x = 0; x < trLine.getRegionWidth(); x++) {
        for (int y = 0; y < trLine.getRegionHeight(); y++) {
            int colorInt = fg.getPixel(trLine.getRegionX() + x, trLine.getRegionY() + y);
            fg.drawPixel(colorInt,trLine.getRegionX() + x , trLine.getRegionY() + y);
        }
    }

    fg.drawPixmap(mask, fg.getWidth(), fg.getHeight());
    mask.setBlending(Pixmap.Blending.SourceOver);

    trBlendedLine=new Texture(fg);

0 个答案:

没有答案