public void GoTo(Unit self, double tX, double tY, double tSpeedX, double tSpeedY, double back, Game game, Move move)
        {
            double Rx = self.X - tX;
            double Ry = self.Y - tY;
            double Vx = self.SpeedX - tSpeedX;
            double Vy = self.SpeedY - tSpeedY;

            double t = (Vx * Vx + Vy * Vy) / (Vx * Vx + Vy * Vy + Rx * Rx + Ry * Ry);
            double Ax = -Rx * (1 - t) - Vx * t;
            double Ay = -Ry * (1 - t) - Vy * t;

            move.SpeedUp = Math.Cos(GetAngleBetween(0, 0, Ax, Ay, self.Angle))
                * Math.Sqrt(Ax * Ax + Ay * Ay);

            if (move.SpeedUp > 0) move.SpeedUp /= game.HockeyistSpeedUpFactor;
            else move.SpeedUp /= game.HockeyistSpeedDownFactor;

            double Frw = GetAngleBetween(0, 0, Ax, Ay, self.Angle);
            double Bck = GetAngleBetween(0, 0, -Ax, -Ay, self.Angle);

            move.Turn = (self.GetDistanceTo(tX, tY) > back || Math.Abs(Frw) < Math.Abs(Bck)) ? Frw : Bck;
        }