/// <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); }
/// <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); }