【问题标题】:XNA Erase/Remove a Texture2DXNA 擦除/移除 Texture2D
【发布时间】:2012-11-04 22:12:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: xna


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        相关资源
        最近更新 更多