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)); } }
IEnumerable <int> ścigaj_gracza(float przyśpieszenie = 1f) { while (true) { Prędkość += (Gracz_statek.Stan.pozycja - pozycja).skaluj_do(przyśpieszenie); if (Prędkość != Vector2.Zero) { orientacja = Prędkość.do_kąta(); } yield return(0); } }