public override void Update() { if (Prędkość.LengthSquared() > 0) { orientacja = Dodatki.do_kąta(Prędkość); } pozycja += Prędkość; if (!Start.rzutnia.Bounds.Contains(Dodatki.do_punktu(pozycja))) { czy_brak = true; } if (!Start.rzutnia.Bounds.Contains(pozycja.do_punktu())) { czy_brak = true; for (int i = 0; i < 30; i++) { Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.laser, pozycja, Color.LightBlue, 50, 1, new Cząstki_stan() { Prędkość = losowe.następny_wektor(0, 9), Typ = cząstki_typ.Pocisk, Mnożnik_długość = 1 } ); } } }
private void strzał_powtarzalny() { if (Prędkość.LengthSquared() > 0.1f) { orientacja = Prędkość.do_kąta(); Quaternion rot = Quaternion.CreateFromYawPitchRoll(0f, 0f, orientacja); double czas_rz = Start.czas.TotalGameTime.TotalSeconds; Vector2 pręd_podstawowa = Prędkość.skaluj_do(-3); Vector2 pręd_przed = new Vector2(pręd_podstawowa.Y, -pręd_podstawowa.X) * (0.6f * (float)Math.Sin(czas_rz * 10)); Color kolor_bok = new Color(200, 38, 9); Color kolor_środek = new Color(255, 187, 30); Vector2 poz = pozycja + Vector2.Transform(new Vector2(-25, 0), rot); const float alfa = 0.7f; Vector2 pręd_śr = pręd_podstawowa + losowo.następny_wektor(0, 1); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.laser, poz, Color.White * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_śr, cząstki_typ.Przeciwnik)); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.żar, poz, kolor_środek * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_śr, cząstki_typ.Przeciwnik)); Vector2 pręd_1 = pręd_podstawowa + pręd_przed + losowo.następny_wektor(0, 0.3f); Vector2 pręd_2 = pręd_podstawowa - pręd_przed + losowo.następny_wektor(0, 0.3f); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.laser, poz, Color.White * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_1, cząstki_typ.Przeciwnik)); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.laser, poz, Color.White * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_2, cząstki_typ.Przeciwnik)); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.żar, poz, kolor_bok * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_1, cząstki_typ.Przeciwnik)); Start.Cząstki_menadżer.stwórz_cząstkę(Tekstury.żar, poz, kolor_bok * alfa, 60f, new Vector2(0.5f, 1), new Cząstki_stan(pręd_2, cząstki_typ.Przeciwnik)); } }
public override void Update() { if (czy_nie_żyje) { if (Gracz_status.życia == 0) { if (Keyboard.GetState().IsKeyDown(Keys.T)) { klatek_do_pojawienia_się = 120; Gracz_status.Reset(); pozycja = Start.rozmiar_ekranu / 2; } else if (Keyboard.GetState().IsKeyDown(Keys.N)) { gra.wyjdź(); } } else { --klatek_do_pojawienia_się; } return; } const float szybkość = 8; Prędkość = szybkość * Sterowanie.pobierz_ruch(); pozycja += Prędkość; pozycja = Vector2.Clamp(pozycja, rozmiar / 2, Start.rozmiar_ekranu - rozmiar / 2); if (Prędkość.LengthSquared() > 0) { orientacja = Dodatki.do_kąta(Prędkość); } var cel = Sterowanie.pobierz_celownik(); if (cel.LengthSquared() > 0 && klatki_pozostało <= 0) { klatki_pozostało = klatki_czas; float cel_kąt = Dodatki.do_kąta(cel); Quaternion cel_quat = Quaternion.CreateFromYawPitchRoll(0, 0, cel_kąt); float losowy_spread = Dodatki.następny_float(losowo, -0.04f, 0.04f) + Dodatki.następny_float(losowo, -0.04f, 0.04f); Vector2 prędkość_p = Prędkość_math.z_krzywej(cel_kąt + losowy_spread, 11f); Vector2 pęd = Vector2.Transform(new Vector2(25, -8), cel_quat); Jednostka_menadżer.dodaj(new Pocisk(pozycja + pęd, prędkość_p)); pęd = Vector2.Transform(new Vector2(25, 8), cel_quat); Jednostka_menadżer.dodaj(new Pocisk(pozycja + pęd, prędkość_p)); Zawartość.Dźwięk.Strzał.Play(0.2f, losowo.następny_float(-0.2f, 0.2f), 0); } if (klatki_pozostało > 0) { klatki_pozostało--; } strzał_powtarzalny(); Prędkość = Vector2.Zero; }