无限数量的子弹

时间:2015-05-08 18:27:37

标签: c# .net sfml sfml.net

我尝试使用SFML.NET在C#上制作射击游戏,但是我无法想象如何能够拍摄超过1个子弹,因为现在我只有一个子弹类的空对象,当时播放器按空格键此对象获取新子弹的链接。

所以,我有Bullet-class,null-object

public static Bullet bullet = null;

和条件

if (Keyboard.IsKeyPressed(Keyboard.Key.Space)) 
{
   if(bullet == null) 
    bullet = new Bullet(t, p.rect.Left, p.rect.Top, p.reverse);
}

当子弹到达墙壁或敌人子弹物体等于null时。 问题是能够在子弹到达墙壁或敌人之前射击更多的子弹(并消失)。我认为这不是为每个可能的小母鸡制作空对象的好方法,因为那时我们的子弹数量有限。

2 个答案:

答案 0 :(得分:5)

我不建议创建子弹列表,而是建议一系列子弹。

按下该键后,您可以向阵列添加另一个项目符号,并在阵列中的所有项目符号上运行更新逻辑。

这也允许你循环回到开头重用内存而不是无限增长的列表。

例如在你的keyPressedEvent:

If space on keyboard is pressed
    Increment bulletCounter
    if(bulletCounter > length of bullets array)
        set bulletCounter = 0;
    Set bullets[bulletCounter] = new Bullet(parameters)

答案 1 :(得分:3)

您应该了解游戏编程的基础知识。对于这种情况,您将使用数组来包含N个子弹。