示例#1
0
//    private bool audioPlaying = false;
//    private AudioSource audioSource;

    public void Start()
    {
        feedbackLamp = gameObject.GetComponent <MoodLight>();
        arms         = gameObject.GetComponent <ArmMovement>();
        toolsReg     = FindObjectOfType <ToolsRegistry>();
//        audioSource = gameObject.GetComponent<AudioSource>();
        ChangeColor();
        ControlArms();
    }
示例#2
0
        public void Shoot(GameTime gameTime)
        {
            if (shootTimer <= 0)
            {
                shootBurstTimer--;
                if (shootBurstTimer <= 0)
                {
                    shootBurstTimer = shootBurst;
                    shootTimer      = shootDelay;
                }

                float   ang_pos = 0f;
                Vector2 pos     = Vector2.Zero;
                Vector2 vel     = Vector2.Zero;

                shootSound.Play();

                switch (thread)
                {
                case BulletThread.Linear: {
                    ang_pos = sprite.physics.yaw_pos;

                    pos    = sprite.physics.pos;
                    pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                    pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));

                    vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos));
                    vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos));

                    Add(ang_pos, pos, vel, bulletTexture, bulletColor);

                    break;
                }

                case BulletThread.EnergyBurst: {
                    for (int ang = 0; ang <= 360; ang += 360 / numBullets)
                    {
                        ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));

                        vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);
                    }
                    break;
                }

                case BulletThread.Butterfly: {
                    for (int ang = 0; ang <= 360; ang += 360 / numBullets)
                    {
                        ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));
                        vel.X  = (float)(bullet_vel_max * Math.Sin(ang_pos));
                        vel.Y  = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));
                        vel.X  = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y  = (float)(-bullet_vel_max * Math.Cos(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);
                    }
                    break;
                }

                case BulletThread.DoubleEllipse: {
                    for (int ang = 0; ang <= 360; ang += 360 / numBullets)
                    {
                        ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));
                        vel.X  = (float)(-bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y  = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos));
                        vel.X  = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y  = (float)(-bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);
                    }
                    break;
                }

                case BulletThread.Spiral: {
                    for (int ang = 0; ang <= 360; ang += 360 / numBullets)
                    {
                        ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f));

                        vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, bulletColor);
                    }
                    break;
                }

                case BulletThread.Sakura: {
                    if (moodLight == null)
                    {
                        moodLight = new MoodLight(Color.Green);     // Green makes cool firework patterns!
                    }

                    for (int ang = 0; ang <= 360; ang += 360 / 5)
                    {
                        ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f));

                        vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, moodLight.color);

                        pos    = sprite.physics.pos;
                        pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos + gameTime.TotalGameTime.Milliseconds / 100f));
                        pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos + gameTime.TotalGameTime.Milliseconds / 100f));

                        vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos));
                        vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos));

                        Add(ang_pos, pos, vel, bulletTexture, moodLight.color);
                    }
                    break;
                }
                }
            }
        }