我尝试使用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时。 问题是能够在子弹到达墙壁或敌人之前射击更多的子弹(并消失)。我认为这不是为每个可能的小母鸡制作空对象的好方法,因为那时我们的子弹数量有限。
答案 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个子弹。