private static IEnumerator<bool> LazyHoming(UserSprite par, Bullet b, double startAngle, double startSpeed, int delay, UserSprite target, double homingSpeed) { for (int i = 0; i < delay; i++) { b.X += Math.Cos(startAngle) * startSpeed; b.Y += Math.Sin(startAngle) * startSpeed; yield return true; } var ha = Math.Atan2(target.Y - b.Y, target.X - b.X); while (true) { b.X += Math.Cos(ha) * homingSpeed; b.Y += Math.Sin(ha) * homingSpeed; yield return true; } }
private static IEnumerator<bool> LinearCurve(UserSprite par, Bullet b, double angle, double curve, double speed, int time) { for (int i = 0; i < time; i++) { angle += curve; b.X += Math.Cos(angle) * speed; b.Y += Math.Sin(angle) * speed; yield return true; } b.IsDead = true; yield break; }