如何在java libGDX框架中从屏幕上清除绘制的纹理
我正在使用JavaLibGDX框架进行游戏开发。我正在尝试清除屏幕上绘制的纹理 让我们以一个经典游戏为例-在许多游戏中,当角色穿过硬币时,硬币会从屏幕上清除,并显示一个甜美的动画,如淡入淡出从该硬币收集的点数(+10),并在该位置显示硬币爆炸动画 我想做类似的事情。 我正在使用如何在java libGDX框架中从屏幕上清除绘制的纹理,libgdx,Libgdx,我正在使用JavaLibGDX框架进行游戏开发。我正在尝试清除屏幕上绘制的纹理 让我们以一个经典游戏为例-在许多游戏中,当角色穿过硬币时,硬币会从屏幕上清除,并显示一个甜美的动画,如淡入淡出从该硬币收集的点数(+10),并在该位置显示硬币爆炸动画 我想做类似的事情。 我正在使用SpriteBatch绘制纹理区域,如下所示 设置纹理区域: (...) public Texture texture; public TextureRegion coin; texture
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)代码>。当然,你可能有很多硬币,所以在
语句中放入一堆抽签调用会变得很混乱。将所有硬币位置放入列表或数组中。在绘图时,循环查看硬币位置列表,只需从收藏中删除已取出的硬币。要淡出,您需要为每枚硬币的批处理设置alphabatcher.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)坐标呢?你能给出一个使用精灵的小例子吗?