title: How to do a multishot in XNA?
body: <p>I am trying to simulate a gun in which shoots multiple bullets at the same time(similar to a spread out shot). I am thinking I have to create another bullet array then do the same as I have below but in a different direction.</p>
  
  <p>Here is what I have so far:</p>
  
  <pre><code>foreach (GameObject bullet in bullets) 
  {
      // Find a bullet that isn't alive
      if (!bullet.alive)
      {
          //And set it to alive
          bullet.alive = true;
  
          if (flip == SpriteEffects.FlipHorizontally) //Facing right
          {
              float armCos = (float)Math.Cos(arm.rotation - MathHelper.PiOver2);
              float armSin = (float)Math.Sin(arm.rotation - MathHelper.PiOver2);
  
              // Set the initial position of our bullets at the end of our gun arm
              // 42 is obtained by taking the width of the Arm_Gun texture / 2
              // and subtracting the width of the Bullet texture / 2. ((96/2)=(12/2))
              bullet.position = new Vector2(arm.position.X + 42 * armCos, arm.position.Y + 42 * armSin);
  
              // And give it a velocity of the direction we're aiming.
              // Increae/decrease speed by changeing 15.0f
              bullet.Velocity = new Vector2(
                  (float)Math.Cos(arm.rotation - MathHelper.PiOver4 + MathHelper.Pi + MathHelper.PiOver2),
                  (float)Math.Sin(arm.rotation - MathHelper.PiOver4 + MathHelper.Pi + MathHelper.PiOver2)) * 15.0f;
          }
  
          else //Facing left
          {
              float armCos = (float)Math.Cos(arm.rotation + MathHelper.PiOver2);
              float armSin = (float)Math.Sin(arm.rotation + MathHelper.PiOver2);
  
              //Set the initial position of our bullet at the end of our gun arm
              //42 is obtained be taking the width of the Arm_Gun texture / 2
              //and subtracting the width of the Bullet texture / 2. ((96/2)-(12/2))
              bullet.position = new Vector2(arm.position.X - 42 * armCos, arm.position.Y - 42 * armSin);
  
              //And give it a velocity of the direction we're aiming.
              //Increase/decrease speed by changing 15.0f
              bullet.Velocity = new Vector2(-armCos, -armSin) * 15.0f;
          }
          return;
      }// End if
  }// End foreach
  </code></pre>