8

我正在开发 LibGdx 中的 2D 射击游戏。我不得不提一下,我是 LibGdx 的新手,我正在努力理解它是如何工作的。我有几年的Java和Android编程经验,所以我了解游戏概念。

我很感兴趣有没有办法淡出精灵对象。

我在屏幕上有敌人,当敌人死了我想从我的列表中删除 Enemy 对象并在计算和交集逻辑中忽略它。

但我想让敌人的精灵在屏幕上停留更长时间并慢慢淡出。

LibGdx 中是否有一个很好的方法来处理这个......或者我必须绘制一些额外的“淡出”帧......并在动画中处理它......

是否有支持这种东西的内置功能?

很多!在我开始头脑风暴并在绘制精灵方面失去生命之前,我需要有人帮我解决这个问题。

4

2 回答 2

13

你应该能够通过随着时间的推移减少他们的“alpha”来淡出你死去的敌人精灵。我认为最简单的方法是使用批处理setColor()

batch.setColor(1.0f, 1.0f, 1.0f, fadeTimeAlpha);
batch.draw(deadEnemySprite, ...);

您必须计算fadeTimeAlpha(随着时间的推移将其从 1.0f 变为 0.0f)。
这些Color.lerp()方法可能会有所帮助。

我不确定为每个精灵设置颜色是否会导致批次刷新(我怀疑它会),因此这可能会产生相对较高的性能成本(假设您的批次精灵绘图事先表现良好)。

于 2013-03-11T16:37:50.097 回答
3

使用 Sprite,您可以使用 .setAlpha:

alpha += (1f / 60f) / 2;
icon.setAlpha(alpha);

首先,alpha 系统:您提供一个介于 0.0 和 1.0 之间的数字(不是 0 和 255)

在上面的代码片段中,alpha是一个浮点值并且icon是一个 Sprite。在这种情况下,Alpha(最初)为 0。

计算:

(1f / 60f) / 2;

1f 是最大 alpha

60f 是 FPS

和 2 是因为我希望它超过 2 秒。

(LibGDX 的新手,所以我还没有弄清楚如何获得 FPS,因为它不一定是 60)。

更改除以(并更改相关的 FPS)会更改从 alpha 中添加(或删除)的量,以及动画将持续多长时间

于 2017-07-20T13:02:08.147 回答