如何在java libGDX框架中从屏幕上清除绘制的纹理

如何在java libGDX框架中从屏幕上清除绘制的纹理,libgdx,Libgdx,我正在使用JavaLibGDX框架进行游戏开发。我正在尝试清除屏幕上绘制的纹理 让我们以一个经典游戏为例-在许多游戏中,当角色穿过硬币时,硬币会从屏幕上清除,并显示一个甜美的动画,如淡入淡出从该硬币收集的点数(+10),并在该位置显示硬币爆炸动画 我想做类似的事情。 我正在使用SpriteBatch绘制纹理区域,如下所示 设置纹理区域: (...) public Texture texture; public TextureRegion coin; texture

我正在使用JavaLibGDX框架进行游戏开发。我正在尝试清除屏幕上绘制的纹理

让我们以一个经典游戏为例-在许多游戏中,当角色穿过硬币时,硬币会从屏幕上清除,并显示一个甜美的动画,如淡入淡出从该硬币收集的点数(+10),并在该位置显示硬币爆炸动画

我想做类似的事情。 我正在使用
SpriteBatch
绘制纹理区域,如下所示

设置纹理区域:

   (...)
    public Texture texture;
    public TextureRegion coin;
    texture = new Texture(Gdx.files.internal("data/texture.png"));
    texture.setFilter(TextureFilter.Nearest, TextureFilter.Nearest); 
    coin = new TextureRegion(texture, 0, 336, 65, 73);
   (...)  
  public SpriteBatch batcher;
  batcher = new SpriteBatch();
  batcher.setProjectionMatrix(cam.combined);
  batcher.begin();
  batcher.enableBlending();
  batcher.draw(coin, x, y, 65,73);
  (...)
  (...)
  batcher.end();  
将纹理绘制到屏幕中:

   (...)
    public Texture texture;
    public TextureRegion coin;
    texture = new Texture(Gdx.files.internal("data/texture.png"));
    texture.setFilter(TextureFilter.Nearest, TextureFilter.Nearest); 
    coin = new TextureRegion(texture, 0, 336, 65, 73);
   (...)  
  public SpriteBatch batcher;
  batcher = new SpriteBatch();
  batcher.setProjectionMatrix(cam.combined);
  batcher.begin();
  batcher.enableBlending();
  batcher.draw(coin, x, y, 65,73);
  (...)
  (...)
  batcher.end();  
游戏角色也使用上面显示的相同逻辑绘制。 现在,当游戏角色将与我所画的硬币碰撞时,硬币必须被清除(消失),一些动画或大字体(如+50)必须在该位置淡入淡出。我尝试过,但没有找到任何可以做到这一点的东西。
那么如何做到这一点呢?

删除只意味着不绘制,所以停止调用批处理程序.draw(coin,x,y,65,73)。当然,你可能有很多硬币,所以在
语句中放入一堆抽签调用会变得很混乱。将所有硬币位置放入列表或数组中。在绘图时,循环查看硬币位置列表,只需从收藏中删除已取出的硬币。要淡出,您需要为每枚硬币的批处理设置alpha
batcher.setColor(1.0f、1.0f、1.0f、alpha)

您可以编写自己的数学来计算硬币褪色时阿尔法的变化,也可以使用com.badlogic.gdx.math.Interpolation类或Universal Tween引擎进行研究

如果您切换到使用精灵,将更容易管理它

// not in render
Sprite coin1 = new Sprite(coinTextureRegion);
coin1.setPosition(x,y);

// in render
coin1.setColor(1.0f, 1.0f, 1.0f, alpha); // if fading
coin1.draw(batch);

Libgdx具有用于绘制/隐藏/移动等的舞台/演员。。。(com.badlogic.gdx.scenes.scene2d)

使用纹理创建演员:
Image Image=新图像(你的纹理)
stage.addActor(图像)

在渲染中:
stage.draw()

停止绘制纹理:

image.remove()。你什么都得做yourself@DuhProgrammer13我不是要整个游戏代码。我只是想知道是否有一些功能可以取消绘制/删除/删除我使用spritebatch绘制的纹理。你的硬币是如何存储的?texture.png有一个硬币图像和其他游戏资产图像。我使用TextureRegion()从那里获得硬币图像,正如我在代码中所示。这很好,但是如何存储硬币的(x,y)坐标呢?你能给出一个使用精灵的小例子吗?