0

我是 XNA 4.0 的新手,我想创建一个太空飞船射击游戏。当我杀死敌人时,我想在它死亡的地方绘制一个爆炸纹理,并且爆炸纹理将消失 2 秒。当敌人死亡时,我设法绘制了一个爆炸纹理,如果敌人在 Draw 方法中是否死亡,则使用布尔值,但我不知道如何在 2 秒后将其移除。谢谢您的帮助。

if (alive)
sp.Draw(enemyTexture, enemyPos, Color.White);

else
sp.Draw(explode, enemyPos, Color.White);
4

2 回答 2

1

对爆炸开始和结束之间的两秒间隔进行类似的检查。您可以只保存爆炸时间并检查它是否比当前时间早 2 秒或更早,如下所示:

TimeSpan explosionTime;
if (itsTimeToExplode)
    explosionTime = gameTime.TotalGameTime;

然后你检查一下是否是时候移除爆炸动画:

if (gameTime.TotalGameTime.TotalMilliseconds - explosionTime.TotalMilliseconds >= 2000) // 2000 milliseconds is 2 seconds
    RemoveExplosionAnimation();

你可以把explosionTime你的敌人类放在里面,只有在敌人死了并且播放了爆炸动画后才删除它。

于 2012-11-04T13:57:42.523 回答
0

您需要使用 gameTime 变量计算 Update 方法中的时间。当您的计数器达到 2s 时,只需 make alive = false; 但更好的想法是使用更新和绘制方法为您的爆炸精灵创建类,并从那里处理计数和渲染。

于 2012-11-04T13:55:58.447 回答