How to do a multishot in xna?
        Posted  
        
            by 
                DeVonte
            
        on Game Development
        
        See other posts from Game Development
        
            or by DeVonte
        
        
        
        Published on 2013-11-12T01:18:35Z
        Indexed on 
            2013/11/12
            4:19 UTC
        
        
        Read the original article
        Hit count: 338
        
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.
Here is what I have so far:
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
        © Game Development or respective owner