Esempio n. 1
0
        /// <summary>
        /// UPDATE
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            var rand = new Random();

            //For å få fienden til å skyte èn og èn partikkel med jevne mellomrom (minst 400ms)
            _skyteTimer += gameTime.ElapsedGameTime.Milliseconds;

            if (IsShooting)
            {
                //For å få fienden til å skyte èn og èn partikkel med jevne mellomrom (minst 400ms)
                _skyteTimer += gameTime.ElapsedGameTime.Milliseconds;

                //Endrer rotasjonen til fienden slik at den følger posisjonen til spilleren
                _rotasjonGun = (float)Math.Atan2(_spiller.Posisjon.Y - Posisjon.Y, _spiller.Posisjon.X - Posisjon.X);

                // Random tidsintervall mellom skuddene
                if (_skyteTimer * rand.NextDouble() * 2 > SkytePause * rand.NextDouble() * 5.0f)
                {
                    _skyteTimer = 0;                                        //resette timeren
                    var laserPartikkel = new TurretLaser(
                        new Vector2(_gunPosisjon.X + 0.5f, _gunPosisjon.Y), //Rotasjonspunkt
                        _rotasjonGun,                                       //Rotasjonensvinkelen til fienden
                        5,                                                  // hastighet
                        700                                                 // Hvor lenge den skal "leve" (i ms)
                        );

                    _laserBeamList.Add(laserPartikkel);
                }
            }

            ShootLaserBeam(gameTime);
        }
Esempio n. 2
0
        /// <summary>
        /// UPDATE
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            if (Helse <= 0)
            {
                IsDead = true;
            }

            var spiller = InitGame.Spilleren;

            //Først en Lerp sånn at han følger etter spilleren
            Posisjon = Vector2.Lerp(Posisjon, spiller.Posisjon, 0.01f);
            //For at bevegelsen ikke skal være lineær
            Posisjon = new Vector2(Posisjon.X +
                                   (float)Math.Sin(gameTime.TotalGameTime.TotalSeconds)
                                   * 20f, Posisjon.Y);

            //Avstand mellom boss og spiller
            var bossToPlayerDistance = Posisjon - spiller.Posisjon;

            //Skyter bare om spilleren er nærme nok
            if ((Math.Abs(bossToPlayerDistance.X) < 1450 && !(Math.Abs(bossToPlayerDistance.X) < 150)) &&
                (Math.Abs(bossToPlayerDistance.Y) < 1450) && !(Math.Abs(bossToPlayerDistance.Y) < 150))
            {
                //Plusser på skyteTimer og roterer laserstrålen
                _skyteTimer     += gameTime.ElapsedGameTime.Milliseconds;
                _rotasjonBossGun = (float)Math.Atan2((spiller.Posisjon.Y - Posisjon.Y)
                                                     - _bossTexture2D.Height / 2, (spiller.Posisjon.X - Posisjon.X)
                                                     - _bossTexture2D.Width / 2);

                if (_skyteTimer >= 300)
                {
                    _skyteTimer = 0;     //resette timeren
                    var laserPartikkelBoss = new TurretLaser(
                        new Vector2(Posisjon.X + _bossTexture2D.Width / 2, Posisjon.Y + _bossTexture2D.Height / 2),
                        //Rotasjonspunkt
                        _rotasjonBossGun, //Rotasjonensvinkelen
                        5,                // hastighet
                        1000              // Hvor lenge den skal "leve" (i ms)
                        );

                    _bossLaserList.Add(laserPartikkelBoss);
                }
            }

            //Skyter laserstråler
            ShootLaserBeam(gameTime, spiller);
        }