C# 多发子弹

C# 多发子弹,c#,xna,C#,Xna,我正在用XNA制作太空入侵者的一个小变种。我已经到了必须让我的飞船开火的地步了。它拍摄正确,但当我再次拍摄时,它会重新绘制照片,使最后一张照片消失。有没有办法解决这个问题?(如果屏幕上有多张照片,我希望我的照片不会消失) 以下是我创建快照的代码: if (_keyboardState.IsKeyDown(Keys.Up)) { _ShotDownPosition.X = _ShipDownPosition.X + (_ShipDown.Width / 2) - (_ShotDown.Wid

我正在用XNA制作太空入侵者的一个小变种。我已经到了必须让我的飞船开火的地步了。它拍摄正确,但当我再次拍摄时,它会重新绘制照片,使最后一张照片消失。有没有办法解决这个问题?(如果屏幕上有多张照片,我希望我的照片不会消失)

以下是我创建快照的代码:

if (_keyboardState.IsKeyDown(Keys.Up))
{
   _ShotDownPosition.X = _ShipDownPosition.X + (_ShipDown.Width / 2) - (_ShotDown.Width/2);
   _ShotDownPosition.Y = _ShipDownPosition.Y - (_ShotDown.Height/2);
   shotDown = true;
}
if (shotDown == true)
{
   _ShotDownDisplacement = _DisplacementUp;
}
_ShotDownPosition += _ShotDownDisplacement * _ShotSpeed * (float)gameTime.ElapsedGameTime.TotalMilliseconds;
这是我移动镜头的代码:

if (_keyboardState.IsKeyDown(Keys.Up))
{
   _ShotDownPosition.X = _ShipDownPosition.X + (_ShipDown.Width / 2) - (_ShotDown.Width/2);
   _ShotDownPosition.Y = _ShipDownPosition.Y - (_ShotDown.Height/2);
   shotDown = true;
}
if (shotDown == true)
{
   _ShotDownDisplacement = _DisplacementUp;
}
_ShotDownPosition += _ShotDownDisplacement * _ShotSpeed * (float)gameTime.ElapsedGameTime.TotalMilliseconds;
知道:

_DisplacementRight = new Vector2(1, 0);
_DisplacementLeft = new Vector2(-1, 0);
_DisplacementUp = new Vector2 (0, -1);
_DisplacementDown = new Vector2(0, 1);

似乎您仅使用
Vector2\u ShotDownPosition
来管理快照,这是错误的。正如Ondrej评论的那样,为了为每个项目创建一个新对象,您需要一个项目符号的
列表
,或者可能创建一个类
项目符号
,或者其他任何东西。

看起来您对所有的项目都使用一个对象。每次按“点火”按钮时创建一个新对象。