private void UpdaterForBazooka(object sender, EventArgs e) { var mousePosX = Mouse.GetPosition(MyCanvas).X; var mousePosY = Mouse.GetPosition(MyCanvas).Y - 80; var bazookaPosX = turns.Peek().CanvasXPos + 15; var bazookaPosY = turns.Peek().CanvasYPos - 30; // Angulo de ataque var controller = ImageBehavior.GetAnimationController(turns.Peek().icon); var angle = Math.Atan((mousePosY - bazookaPosY) / (mousePosX - bazookaPosX)) + (Math.PI / 2); // va de 0 a Pi var frame = 0.0; if (mousePosX < bazookaPosX) { frame = (angle * 31) / (Math.PI); ScaleTransform scale = new ScaleTransform(); scale.ScaleX = 1; scale.CenterX = 45; TransformGroup myTransformGroup = new TransformGroup(); myTransformGroup.Children.Add(scale); turns.Peek().icon.RenderTransform = myTransformGroup; controller.GotoFrame((int)frame); } else { ScaleTransform scale = new ScaleTransform(); scale.ScaleX = -1; scale.CenterX = 45; TransformGroup myTransformGroup = new TransformGroup(); myTransformGroup.Children.Add(scale); turns.Peek().icon.RenderTransform = myTransformGroup; frame = -1 * (((angle * 31) / (Math.PI)) - 14) + 17; controller.GotoFrame((int)frame); } //Barra de potencia var speedx = mousePosX - bazookaPosX; var speedy = mousePosY - bazookaPosY; var speed = Math.Sqrt(Math.Pow(speedx, 2) + Math.Pow(speedy, 2)); var barraPotencia = (160.0 / speed) * 950; //lb.Content = barraPotencia; if (barraPotencia >= 33) { potencia.Margin = new Thickness(33, 600, barraPotencia, 10); } //lb.Content = "frame = " + frame; if (Mouse.LeftButton == MouseButtonState.Pressed && wraper.Count == 0) { potencia.Visibility = System.Windows.Visibility.Hidden; potencia2.Visibility = System.Windows.Visibility.Hidden; Wrap p = new Wrap(speedx, speedy, turns.Peek().CanvasXPos, turns.Peek().CanvasYPos, 90, 40); Image img = new Image(); var image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri(@"D:\repos\Die_And_KILL\Die_And_Kill\Resources\bazooka.gif"); image.EndInit(); ImageBehavior.SetAnimatedSource(img, image); Canvas.SetTop(img, p.CanvasPosY); Canvas.SetLeft(img, p.CanvasPosX); MyCanvas.Children.Add(img); wraper.Add(new Tuple <Image, Wrap>(img, p)); BazookaControl.Stop(); } }