我正在开发LibGdx中的2D射击游戏。 我必须提到我是LibGdx的新手,我正在努力理解它是如何工作的。我有几年的Java和Android编程经验,所以我理解游戏概念。
我感兴趣的是有一种淡出精灵对象的方法。
我在屏幕上有敌人,当敌人死亡时我想从我的列表中移除敌人对象并在计算和交叉逻辑中忽略它。
但我希望敌人的精灵在屏幕上停留更长时间并慢慢淡出。
在LibGdx中有一个很好的办法来处理这个...或者我必须绘制一些额外的“淡出”帧......并在动画中处理它......
是否有支持此类内容的内置功能?
Tnx很多!在我开始暴风雨之前,我需要有人为我清除这一点,并且在绘制精灵时会失去生命。
答案 0 :(得分:11)
你应该能够通过随着时间的推移减少他们的“阿尔法”来消灭你死去的敌人精灵。我认为最简单的方法是使用批处理setColor()
:
batch.setColor(1.0f, 1.0f, 1.0f, fadeTimeAlpha);
batch.draw(deadEnemySprite, ...);
你必须计算fadeTimeAlpha
(随着时间的推移从1.0f到0.0f)
Color.lerp()
methods可能会有所帮助。
我不确定为每个精灵设置颜色是否会导致批次冲洗(我怀疑它会),因此这可能会产生相对较高的性能成本(假设您的批量精灵绘图预先表现良好)。 / p>
答案 1 :(得分:1)
使用Sprite可以使用.setAlpha:
alpha += (1f / 60f) / 2;
icon.setAlpha(alpha);
首先,alpha系统:你提供一个介于0.0和1.0之间的数字(不是0和255)
在上面的代码段中,alpha
是一个浮点值,icon
是一个精灵。在这种情况下,Alpha(最初)为0。
用于计算:
(1f / 60f) / 2;
1f是最大alpha
60f是FPS
和2是因为我希望这超过2秒。
(LibGDX新手,所以我还没弄清楚如何获得FPS,因为它不一定是60)。
更改除以(并在相关时更改FPS)会更改从Alpha添加(或删除)的数量,以及动画将经过多长时间