post

En este tutorial vamos a explicar cómo crear un sencillo controlador táctil para dispositivos móviles haciendo uso del nuevo sistema UI nativo de Unity, disponible desde su versión 4.6 y que ha supuesto un gran avance respecto a su anterior sistema de creación de interfaces de usuario.

Hasta ahora, con el anterior sistema, resultaba bastante tediosa la creación de elementos de tipo UI, así como su manejo y adaptación a las diferentes resoluciones de pantalla (casi todo mediante scripting), llegando al punto de que muchos desarrolladores optaban por la opción de usar herramientas de terceros que estaban mucho mejor preparadas. Sin embargo veremos que con el nuevo sistema nativo que han desarrollado, la creación de interfaces gráficas se ha simplificado a una manera intuitiva e increíblemente sencilla… ¡un 10 para los desarrolladores de Unity! 🙂

Creación del objeto de tipo ‘Canvas’

Uno de los principales elementos que incorpora el nuevo sistema UI es el Canvas‘. Se trata de un contenedor dentro del cual incluiremos todos los objetos de tipo UI que queramos que aparezcan en nuestra pantalla (botones, texos, imágenes…). Una gran ventaja que tiene el uso de canvas es que automáticamente es capaz de adaptarnos la escala y la posición de todos sus elementos UI a la resolución de pantalla de nuestro juego. Veamos cómo crearlo:

Lo primero que haremos será crear un objeto de tipo ‘Canvas‘ en la jerarquía de objetos de nuestra escena. Para ello, dentro del menú desplegable «Create» de la sección «Hierarchy«, encontraremos una sección llamada «UI» y dentro de ella diferentes elementos, seleccionamos «Canvas» y lo renombramos por ejemplo a «GUIControladorTactil«.

Crear un objeto de tipo ‘Canvas’

Veremos que en nuestra escena se ha creado una zona rectangular que corresponde a nuestro canvas y que contiene una serie de propiedades configurables. Observaremos que no se trata de un GameObject común ya que no cuenta con un componente de tipo ‘Transform‘ y por lo tanto carece de escala y posición. No nos preocupemos. También veremos que, aparte del objeto de tipo canvas, en nuestra jerarquía se habrá creado un objeto llamado «EventSystem«. De él sólamente decir que se trata de un objeto que siempre deberá existir cuando estemos haciendo uso de elementos de tipo UI en nuestra escena, ya que es el que se encarga de gestionarlos internamente.

Objeto ‘Canvas’

Creación de los botones UI que formarán el controlador táctil

Una vez tenemos nuestro canvas creado, vamos a crear los diferentes botones que formarán nuestro controlador.

* Para este tutorial construiremos un controlador sencillo (cuatro botones para la cruceta y otros dos botones de acción), por lo que se deja al criterio del desarrollador construir su propio ccontrolador en función de sus necesidades.

Para ello seleccionaremos en la jerarquía nuestro objeto «GUIControladorTactil« y, al igual que antes, nos iremos al menú «Create» -> «UI»  pero ahora seleccionaremos el elemento «Button«. A continuación veremos que se nos ha añadido un botón dentro de nuestro canvas con las siguientes propiedades:

Propiedades de un UI Button

* Observemos que al crear el objeto de tipo button, dentro de éste se ha añadido automáticamente, como objeto hijo, otro objeto llamado «Text«. Como en este tutorial vamos a hacer uso de imágenes para representar a cada uno de los botones, vamos a eliminar ese objeto ya que no nos será necesario.

Entre las propiedades de este objeto «Button» observamos que, a diferencia del objeto canvas, este ya sí que cuenta con un componente «Rect Transform» en el que podemos configurar su posición dentro del canvas, su escala, rotación, etc. También vemos que tiene otros componentes como «Canvas Renderer«, «Image» y «Button«, todos ellos configurables para darle a nuestro botón el aspecto y el comportamiento que deseemos.

En este caso vamos a configurarlo para que el aspecto del botón sea directamente una imagen (.png) seleccionada por nosotros y además añadiremos un pequeño efecto visual para cuando pulsemos y despulsemos el botón. Ni que decir tiene que queda a libre elección del desarrollador el configurar el aspecto del botón como desee.

* Más abajo ponemos a disposición del lector las imágenes usadas en este tutorial para ser descargadas.

En la siguiente imagen se indica, señalado en amarillo, las propiedades que hemos cambiado para este ejemplo:

Configuración del botón

Con esto lo que hemos hecho ha sido:

  • Ponerle un nombre descriptivo a nuestro botón.
  • Width / Height: Especificarle una anchura y una altura específica.
  • Source Image: Indicarle la imagen que queremos que cargue.
  • Transition -> Normal Color: Indicarle que cuando el botón esté en estado de reposo le aplique un poco de transparencia alfa.
  • Transition -> Highlighted Color: Indicarle que cuando pasemos por encima del botón (con el dedo o con el ratón) le siga aplicando la misma transparencia alfa.
  • Transition -> Pressed Color: Indicarle que cuando pulsemos el botón (con el dedo o con el ratón) elimine su transparencia y se convierta en color sólido.

Una vez hecho esto, creamos el resto de botones (btnIzqda, btnArriba, btnAbajo, btnAction1 y btnAction2) exactamente igual que hemos hecho con «btnDcha» y los colocamos a nuestro gusto dentro del canvas, de tal manera que quede algo como esto:

Disposición de los botones dentro del canvas

* A continuación dejamos las imágenes usadas en este tutorial para quien quiera usarlas. Pincha en ellas para descargalas:

Bien pues, una vez conseguido construir el aspecto de nuestro controlador, pulsamos PLAY para ejecutar nuestra escena, veremos que salen en pantalla nuestros botones y que al pulsarlos hacen el efecto de ponerse más oscuros, justo como queríamos. Observemos que la posición y el tamaño de los elementos UI es justo el que le hemos indicado en sus propiedades, sin embargo, si probamos a cambiar la resolución de la pantalla observamos que los botones se quedan estáticos en cuanto a posición y tamaño. Esto sería un problema ya que suponemos que nuestro juego podrá lanzarse en diferentes resoluciones y por tanto querremos que los botones se adapten a ellas. No tendría sentido que con una resolución pequeña los botones se vieran a un determinado tamaño y en una resolución el doble de grande se sigan viendo igual que en la resolución más baja.

Para solucionar esto es tan simple como irnos a las propiedades de nuestro canvas y, en su componente «Canvas Scaler«, seleccionamos UI Scale Mode -> Scale With Screen Size. Esto, automáticamente, hará que todo el contenido de nuestro canvas se reescale según el tamaño de nuestra pantalla, ¡así de sencillo! 🙂

Cambiamos la propiedad UI Scale Mode para que el canvas se auto-reajuste

Cambiamos la propiedad UI Scale Mode para que el canvas se auto-reajuste

Creación de eventos

Ya tenemos terminado lo que será el aspecto visual de nuestro controlador táctil, pero aún nos falta lo más importante, que es darle funcionalidad.

Para ello, el nuevo sistema UI de Unity pone a nuestra disposición un componente llamado «Event Trigger«, con el que seremos capaces de indicarle a cualquiera de nuestros elementos UI que respondan ante cualquier evento sobre ellos como por ejemplo podría ser la acción de ser presionados, ser arrastrados, pasar por encima con el dedo o ratón, etc.

Empecemos por irnos a las propiedades de uno de nuestros botones y, a través del botón «Add Component«, añadamos el componente «Event Trigger«.

Añadir el componente ‘Event Trigger’ a cada botón

Ahora pinchamos sobre el botón «Add New Event Type» del nuevo componente que hemos añadido y nos saldrá un listado con todos los eventos que soporta un elemento UI. Dichos eventos responderán a diferentes acciones que realicemos sobre el botón al que se lo apliquemos.

Lista de eventos UI

En nuestro caso vamos a añadir estos cuatro eventos:

  • Pointer Down: Será el correspondiente a cuando pulsemos el botón con el dedo (o ratón).
  • Pointer Up: Será el correspondiente a cuando dejemos de pulsar el botón con el dedo (o ratón).
  • Pointer Enter: Será el correspondiente a cuando arrastremos el dedo (o ratón) desde fuera del botón a dentro de él.
  • Pointer Exit: Será el correspondiente a cuando arrastremos el dedo (o ratón) desde dentro del botón hacia fuera de él.

Añadimos los cuatro eventos dentro del componente ‘Event Trigger’

* Aquí el lector podría preguntarse: «¿por qué necesitamos los cuatro eventos si con sólo dos de ellos (‘Pointer Down’ y ‘Pointer Up’) sería suficiente para recoger las pulsaciones en nuestro controlador?». Pues en teoría tendría razón, pero en este tutorial recomendamos contemplar también los dos eventos de ‘Pointer Enter’ y ‘Pointer Exit’ para mejorar la experiencia en una pantalla táctil. Controlar los cuatro eventos nos permitirá poder pulsar los botones tanto de manera puntual (clickeando) como arrastrando el dedo, sin levantarlo, hasta ellos.

Haremos exactamente lo mismo para el resto de botones de nuestro controlador.

Como vemos, hemos dejado nuestros botones listos para configurar los comportamientos que queramos que ocurran cada vez que se dé cualquiera de esos cuatro eventos sobre ellos, pero esto aún no lo vamos a hacer, ya que antes vamos crear el script que se encargará de realizar los comportamientos necesarios.

Creación del script ‘ControlarObjeto.cs’

El objetivo de este tutorial no es centrarnos en la implementación de los scripts que realizarán las acciones de los botones (ya que cada desarrollador los implementarán de un modo u otro en función de las necesidades de su juego) si no de mostrar cómo asociar dichos scripts a nuestro sistema de UI y, por tanto, a modo de ejemplo, vamos a crear un script sencillo que sea capaz de realizar tan solo las siguientes acciones:

  • Mover un objeto en el eje X y en el eje Y.
  • Aumentar o disminuir al escala de dicho objeto.
using UnityEngine;

public class ControlarObjeto : MonoBehaviour 
{
    // En esta variable configuraremos la velocidad a la que se moverá el objeto
    public float Velocidad = 5.0F;

    private bool derecha = false;
    private bool izquierda = false;
    private bool arriba = false;
    private bool abajo = false;
    private bool aumentar = false;
    private bool disminuir = false;

    void Update ()
    {
        if(derecha)
        {
            // Movemos el objeto hacia la derecha
            this.transform.Translate(Vector3.right * Time.deltaTime * Velocidad);
        }

        if (izquierda)
        {
            // Movemos el objeto hacia la izquierda
            this.transform.Translate(Vector3.left * Time.deltaTime * Velocidad);
        }

        if (arriba)
        {
            // Movemos el objeto hacia arriba
            this.transform.Translate(Vector3.up * Time.deltaTime * Velocidad);
        }

        if (abajo)
        {
            // Movemos el objeto hacia abajo
            this.transform.Translate(Vector3.down * Time.deltaTime * Velocidad);
        }

        if (aumentar)
        {
            // Aumentamos la escala del objeto
            this.transform.localScale = new Vector3(
                this.transform.localScale.x + 0.05F,
                this.transform.localScale.y + 0.05F,
                this.transform.localScale.z + 0.05F);
        }

        if (disminuir)
        {
            // Disminuimos la escala del objeto
            this.transform.localScale = new Vector3(
                this.transform.localScale.x - 0.05F,
                this.transform.localScale.y - 0.05F,
                this.transform.localScale.z - 0.05F);
        }
    }

    /******************** FUNCIONES PÚBLICAS ********************/

    public void MoverDerecha()
    {
        derecha = true;
    }

    public void MoverIzqda()
    {
        izquierda = true;
    }

    public void MoverArriba()
    {
        arriba = true;
    }

    public void MoverAbajo()
    {
        abajo = true;
    }

    public void Detener()
    {
        derecha = false;
        izquierda = false;
        arriba = false;
        abajo = false;
    }

    public void AumentarEscala()
    {
        aumentar = true;
    }

    public void DisminuirEscala()
    {
        disminuir = true;
    }

    public void DetenerEscala()
    {
        aumentar = false;
        disminuir = false;
    }
}

Una vez tenemos creado nuestro script, se lo asociamos al objeto de nuestra escena el cual querremos controlar mediante nuestro controlador táctil. En este caso hemos creado un simple cubo y le hemos añadido como componente nuestro script.

Asignaremos nuestro script al objeto de tipo cubo

Una vez hecho esto, ya tenemos todo preparado para volver a nuestro sistema UI y configurar sus eventos para que realice las diferentes acciones.

Configuración de las acciones en los eventos

Ya solo nos queda configurar cada uno de los eventos que añadimos anteriormente en el «Event Trigger» de cada botón de nuestro controlador táctil. Para ello seleccionamos uno de los botones, por ejemplo «btnDcha«, y configuramos su «Event Trigger» del siguiente modo:

Configuración del componente ‘Event Trigger’ del botón ‘btnDcha’

Como vemos, dentro de cada uno de los eventos, hay tres campos configurables:

  • El primer desplegable siempre lo dejaremos con el valor ‘Runtime Only‘.
  • En el campo de más abajo deberemos arrastrar el objeto que contiene el script con las funciones públicas que se encargarán de realizar las acciones. En nuestro caso, obviamente, será nuestro cubo.
  • En el campo de la derecha, al desplegarlo, nos saldrá una lista de componentes, entre los cuales veremos que aparece el nombre de nuestro script «ControlarObjeto«. Si lo seleccionamos se nos desplegará otra sub-lista con todas las funciones públicas que contiene nuestro script que son justamente las que necesitamos.

Observemos que la lista de componentes a elegir en la lista de acciones de la derecha va a depender siempre del objeto que asignemos en el campo de abajo a la izquierda.

Si ahora ejecutamos nuestro juego veremos que al colocar el dedo (o ratón) encima del botón derecho de la cruceta, el cubo comenzará a moverse y, si dejamos de pulsar, éste se detiene.

¡Así de sencillo es! Ahora sólo nos queda configurar, al igual que hemos hecho con este botón, los eventos del resto de botones de la cruceta. Los pasos a seguir serán exactamente los mismos que para el botón «btnDcha» pero teniendo en cuenta que en los eventos «Pointer Down» y «Pointer Enter«, en vez de asignarle la función MoverDerecha() de nuestro script, le asignaremos la correspondiente a cada botón.

Y por último, para los eventos de los botones de acción 1 y 2, le asignaremos las funciones correspondientes a aumentar o disminuir escala, veamos el ejemplo con el botón «btnAction1«:

Configuración del componente ‘Event Trigger’ del botón ‘btnAction1’

¡Y eso es todo! Con estos sencillos pasos tendremos un sistema UI (en nuestro caso usado para construirnos un controlador táctil simple) que será totalmante autoadaptable a todo tipo de resoluciones y que funcionará en cualquier dispositivo móvil.

Resultado final

A partir de aquí, como siempre, queda a elección del lector el desarrollar el sistema que desee para sus necesidades concretas 😉

A continuación dejamos el link para descargar el código del proyecto utilizado en este tutorial:

DESCARGAR PROYECTO

* Para más info sobre el nuevo sistema UI de Unity, entra en su documentación oficial.

Acerca de Santi Andrade

Canturreo canciones, hago cosas raras de informáticos y amo las croquetas. Web & Unity Game Developer y miembro de la banda de rock 'Histeria Innokua'. histeriagamedev.wordpress.com | Sígueme en Twitter

4.475 respuestas sobre “Unity: Controlador táctil para dispositivos móviles (Nuevo sistema UI)

      • Excelente post, Santi! Como siempre…

        Yo tengo una duda acerca de los botones.. la comparto por aqui por si ha alguien le ayuda.
        Tengo un script para abrir una puerta con una llave ( del modo mas simple pero bestia, si quereis lo comparto) Me explico, tengo colocado un cubo sin mesh delante de la puerta que impide ejecutar la funcion de abrir, al coger la llave, este cubo desaparece (mediante deactivate.trigger). Hasta aqui bien, el problema es que para abrir la puerta, debo pulsar una tecla «F». En Pc funciona muy bien, pero no sé como hacer un boton que simule el pulsar «f», ya que la idea es hacer el juego para moviles..

        Otra cosa que probé es desactivar lo de pulsar f, pero la puerta se abre y cierra continuamente al acercar el player a su collinder…

        Teneis alguna idea de como hacer el boton que simule pulsar una tecla? Y que sea leido en el juego?

        Mil gracias de antemano y saludos!
        Para antes de navidades quiero tener el juego listo, lo compartiré con vosotros!

        • Hola Daniel, gracias por tu comentario.
          Lo que dices de simular la pulsación de una tecla desde un móvil sería tan fácil como añadir un botón UI (como el que hago en el ejemplo de este post, por ejemplo) y asignarle a dicho botón la función que usas para la tecla F.
          No le veo mayor complicación… ¿o quizás no te estoy entendiendo bien?

  1. Muy buen artículo, muy bien explicado.
    Vuelvo a Unity despúes de un tiempo y me encuentro con varias mejoras. Ya quedo atrás el tiempo de hacer los controles touch con GuiTextures y scripts para escalar y posicionar los mismos.

    Saludos,

  2. Muy buen aporte si señor.
    Yo en mis proyectos no uso el event trigger, si no que simplemento lo hago con la función OnClick, pero para juegos con mas funciones está mejor usar tu método, sobre todo con botones con distinta función según el grado de presión.
    Un problema que encontré yo, es cuando el objeto que tenemos que instanciar y no está en escena, si arrastramos el prefab se bugea en ocasiones y pierde la referencia del objeto que contiene la clase.

    • Sí, la verdad es que el EventTrigger es bastante útil para contemplar más estados de pulsación, aparte del simple OnClick, en nuestra interfaz UI y, además, tenerlo todo agrupado en un mismo sitio.

      Respecto al problema que comentas de que a veces se pierden las referencias, nunca me ha ocurrido manejando específicamente objetos UI, pero sí que alguna vez Unity me ha hecho cosas raras en cuanto a referencias a scripts… así que te creo! 😀 Supongo que esos pequeños busgs los irán arreglando en futuras versiones.

      Muchas gracias por leer el artículo y me alegro que te haya gustado! 🙂
      Saludos!

  3. Hola segui los pasos y pude hacerlo, pero al pasarlo al celular para probarlo no me funciona y en el unity vi que sale un mensaje que dice Failed to get device caps
    Alguna idea de que pasa?

    • Hola Jesús! Por lo que me comentas, ese error no tiene nada que ver con el código en sí… He buscado por encima en Google y he visto que hay mucha gente a la que le pasa y puede que tenga que ver con el hecho de conectar Unity con un dispositivo móvil a través de USB. ¿Para qué dispositivo estás probando?, ¿Android?, ¿IOS? ¿Y cómo estás intentando probar el juego en el móvil? No sé cuál será tu caso en concreto, pero échale un ojo a los foros en internet a ver si alguien encontró la solución.

      Ya te digo que no es tema del código… Yo lo he probado en un móvil Android y funciona perfectamente.

      Suerte y espero que si encuentras la solución, nos lo comentes por aquí por si a alguien le ocurre lo mismo! 😉

      Gracias por seguir el post!
      Saludos!

  4. buenas buenisimo me re sirvio me venia rompiendo la cabeza mucho con esto ya . queria preguntar q evento utilizar para q realize una acciio mientras se mantiene presionado un boton.

  5. Buen día Santi Andrade. primero muchas gracias por compartir tus conocimientos, eres muy amable, discúlpame mi ignorancia soy nuevo con Unity, y no he podido poner la imagen en el que aspecto del botón sea directamente una imagen (.png), cuando le doy al Source Image solo me da opción de escoger unos sprite ya predeterminados pero no puedo examinar el equipo para poder buscar la imagen que quiero o cualquier .png también trato de arrastrar la imagen al Source Image pero tampoco la carga. te agradezco mucho tu ayuda y tu atención prestada

    • Hola Pablo, muchas gracias por leer el artículo. Es muy fácil lo de la imagen, para que puedas usar cualquier recurso de tu PC (imágenes, audios, etc) en Unity, tienes que añadirlo previamente a la librería de tu proyecto, es decir a la parte de «Project». Por tanto lo único que tienes que hacer es arrastrar tu imagen desde la carpeta de tu PC hasta la carpeta que quieras dentro de » Project» en Unity. Una vez hecho esto verás que ya sí te saldrá disponible para asignarla al botón 😉 Saludos!!

  6. Excelente. Gracias por compartir tus conocimientos.
    Tengo una duda: Como puedo hacer para que el botón quede en una posición fija?.
    Lo que pasa es que cuando le doy play en unity para correr la aplicación, el botón cambia de posición y cuando lo pruebo en mi android sale en otra posición en la pantalla.
    Hay alguna manera para que dicho boton permanesca siempre en un mismo lugar?.

  7. Buenisimo el tutorial explicas muy bien, te queria preguntar como harias para que al precionar una sola ves el boton se mueva constantemente yo ya lo intente y no se que hacer.

    • Muchas gracias Darwin 🙂 Lo que me preguntas tiene fácil solución: lo único que tendrías que hacer es NO configurar los Event Trigger «PointerUp» y «PointerExit» del botón donde quieras tener ese comportamiento, de manera que una vez que pulses el botón, llame a la función de moverse pero que al levantar el dedo no llame a ninguna función que lo detenga. En conclusión, tendrías tan sólo 2 Event Trigger configurados: el «PointerDown» y el «PointerEnter». Espero que te sirva de ayuda!

      • Gracias me sirvio tu consejo, lo que hice borre la funcion detener y en las funciones de movimiento agregue los otros movimiento y los puse en false, mira que quiero que gire con respecto al movimiento que hace por ejemplo al presionar arriba que gire para arriba estoy poniendo esta linea de codigo pero igual no funciona me descontrola el movimiento
        this.transform.rotation=new Quaternion(0,0,270,0);
        te agradeceria muchisimo si me ayudas, ademas te iba a preguntar tienes algun canal en youtube para seguirte

        • Hola de nuevo Darwing, me alegro haberte servido de ayuda. Para la rotación yo te recomiendo que uses transform.Rotate() que es bastante sencillo. Aquí te dejo el link de su documentación donde puedes ver algún ejemplo de uso: http://docs.unity3d.com/ScriptReference/Transform.Rotate.html

          Es tan fácil como a la función Rotate() pasarle el eje sobre el que quieres rotar multiplicado por los ángulos que quieres rotar por frame.

          Saludos!

          • Que tal santi gracias por el consejo logre avanzar en mi juego pero me e topado con un problema haber si tu me puedes ayudar, la cosa es que quiero que al entrar a una zona se desactiven parte de mis botones de movimiento, bueno se supone que lo que estoy haciendo los desactivaria, logre hacer que en teoricamente lo desactive porque al correr el juego y chocar con el objeto se ponen en gris pero el problema es que igual al clickearlo siguen funcionando no se la verdad si sera por los eventos de los botones talves tengas alguna idea te dejo mi codigo:
            using UnityEngine;
            using System.Collections;
            using UnityEngine.UI;

            public class ActBtn_Arb_Abj : MonoBehaviour {
            private bool choque=false;
            public Transform btnDerecho;
            public Transform btnIzquierdo;
            public Transform btnArriba;
            public Transform btnAbajo;

            void OnTriggerEnter2D(Collider2D colision){

            if(!choque && colision.gameObject.tag==»Player»){
            Debug.Log («colisiono»);
            choque = true;
            btnDerecho.GetComponent ().interactable = true;
            btnIzquierdo.GetComponent ().interactable = true;
            btnArriba.GetComponent ().interactable= false;
            btnAbajo.GetComponent ().interactable = false;

            }
            }

            }

    • Bueno otra opción sería, en vez de intentar deshabilitar la UI del botón, parar el movimiento a través de código. Por ejemplo, si lo que quieres es que tu personaje no avance cuando entres en tal zona, en el trigger donde detectas la entrada a dicha zona haz que, aunque le des al botón de avanzar, tu personaje se quede quieto. De esto modo no tienes que tocar nada de la UI y la lógica iría controlada por completo desde tu código.

  8. Hola como estas? me sirvio mucho tu tutorial, sera que podrias hacer un tuto de implementar palanca joystick,
    hay muchos por alli, pero la verdad quiero es aprender hacerlo yo mismo desde cero, se le agredece ^^,

  9. Tengo un problema, al implementar esto, no funcionan los colliders, no choca con nada, a menos que sea un rigidbody, alguien sabe como arreglarlo

  10. Buenos días,
    He probado a cargar el juego en mi móvil (Android) y resulta que cuando haces click en un botón y seguidamente levantas el dedo este se queda seleccionado, realizando así la acción asignada para siempre hasta que tocas en algún punto de la pantalla.
    ¿Cómo podría solucionarlo?
    Un saludo!!

    • Hola Edgar, ¿te has asegurado de que en el evento «Pointer Up» está asignada la función de detener?
      Es raro… ¿has probado en otro dispositivo android? Quizás sea alguna particularidad de ese móvil en concreto.

      • Si, la función asignada a pointer up es la correcta. La verdad es que no he probado en otros dispositivos. De todas formas al final lo solucioné cambiando en el EventSystem el componente Input Module Standalone por Input Module Touch, y supongo que mediante un script con un #if y la plataforma podré activar uno y desactivar otro, ya que con el Touch el teclado no va.
        Un saludo y muchas gracias!

      • Por cierto, probé a bajarme tu proyecto y cargarlo en mi móvil (después de upgradearlo a la última versión de unity) y me daba el mismo problema. Así que puede que sea cosa de la versión o cosa del móvil (aunque este último me extraña).

  11. Hola amigo realmente te felicito por todo, estoy haciendo un juego en el que ya tengo asignado los scripts a una pelota, se mueve gracias a las teclas arriba abajo etc del teclado, como puedo asignar esas teclas a los botones, muchas gracias.

    • Hola stojan, tal y como explico en este tutorial, en el script de ControlarObjeto tendrías que implementar el movimiento de tu pelota, justo en esta parte:

      if(derecha)
      {
      // Movemos el objeto hacia la derecha

      }

      if (izquierda)
      {
      // Movemos el objeto hacia la izquierda

      }

      if (arriba)
      {
      // Movemos el objeto hacia arriba

      }

      if (abajo)
      {
      // Movemos el objeto hacia abajo

      }

      Donde pongo los puntos suspensivos (…) es donde tendrías que escribir el código que usas ahora para mover la pelota a izqda, dcha, alante y atrás.

  12. Hola excelente tutorial, muchas gracias, tengo un pequeño problemilla, como mi objeto es una pelota tiene que girar entonces cuando gira por gravedad el controlador se vuele loco, el de la derecha empieza a tirar para todas las direcciones y asi todos. Sera que este controlador no me sirve?. O puedo modificar fácilmente el script para que deje guiar la dirección según su frente.

    • Hola JohnnyBGoode, gracias por comentar.

      No sé si he entendido muy bien tu problema, pero si lo que quieres es simplemente rotar tu pelota con los botones táctiles de izquierda y derecha, lo que yo haría sería usar la función Transform.Rotate() en su sitio correspondiente del Update.

      Algo así como:

      if (derecha)
      {
      // Rotamos el objeto en función del eje Y (coordenadas del mundo)
      transform.Rotate(Vector3.up * Time.deltaTime * VelocidadDeGiro, Space.World);
      }

      O si quieres rotar tu pelota en coordenadas locales:

      if (derecha)
      {
      // Rotamos el objeto en función del eje Y (coordenadas locales)
      transform.Rotate(Vector3.up * Time.deltaTime * VelocidadDeGiro);
      }

      Échale un ojo a esto: https://docs.unity3d.com/ScriptReference/Transform.Rotate.html

  13. Hola Santi utilice tus controles en mi juego para mover izquierda y derecha pero quiero que cuando se mueva rote 30 grados y no consigo hacerlo.
    public float Velocidad = 5.0F;
    public float anguloDeGiro = 30;
    private bool derecha = false;
    private bool izquierda = false;
    void Update ()
    {
    if(derecha)
    {
    this.transform.Translate (Vector3.right * Time.deltaTime * Velocidad);
    this.transform.Rotate (Vector3.right * Time.deltaTime * anguloDeGiro);

    • Creo que tu problema está en esta línea de código que usas para girar el objeto:
      this.transform.Rotate (Vector3.right * Time.deltaTime * anguloDeGiro);

      Si te fijas, estás girando el objeto sobre su eje «right», es decir, sobre su eje horizontal, cuando lo que deberías hacer es girarlo sobre su eje vertical. Por tanto sería:
      this.transform.Rotate (Vector3.up * Time.deltaTime * anguloDeGiro);

  14. Hola

    Primero muchas gracias por compartir tu conocimiento, explicaste todo muy bien.

    Soy nuevo en unity y quiero hacer una aplicación 2D para móviles, pero quiero añadir un modelado 3D, quiero que este pueda rotarse, escalarse y tener alguna animación.

    ¿Sabes como puedo hacerlo ? me podrías ayudar.

    Muchas gracias.

    • Hola Dianiel, gracias por tu comentario. Lo que comentas se sale de lo que se está tratando en este tutorial en concreto, así que para la próxima te pido que para consultas que no sean sobre esta temática me las envíes por vía email, gracias!

      Lo que dices de añadir modelos 3D en un juego 2D se puede hacer sin problema desde que Unity incorporó su nuevo sistema 2D. A la hora de crear un proyecto, seleccionas que sea de tipo 2D (esto hará que la cámara sea de tipo ortográfico y demás configuraciones propias del 2D) y ya trabajando sobre una escena, puedes añadir objetos 3D sin problema. En cámara, dichos objetos los verás en modo ortográfico (2D) pero realmente son objetos 3D y puedes tratarlos como si de un proyecto 3D se tratase. Lo único que tienes que tener en cuenta es que, si quieres que dichos objetos 3D interactúen, mediante físicas, con objetos 2D, tendrás que incorporarle a los objetos 3D componentes propios del 2D (por ejemplo: collider2D, rigidbody2D, etc.).

      Saludos!

  15. Hola! genial haber encontrado este blog!
    Ahora tengo una duda, resulta que hace tiempo vengo haciendo juegos en 2d para android (en unity, obivo),
    y siempre tengo problema para crear mis controles, que se re-escalan mal en los distintos dispositivos, que esto que lo otro, pero el principal problema es trabajar con multitouch, sera posible alguna explicación o ejemplo del multitouch? por ejemplo, para presionar 2 botones a la vez, etc..

    Desde ya gracias por leerme y muy buen trabajo!

    • Hola Alejandro, el tema de que se te reescalen los controles en diferentes dispositivos se puede deber a que no estén anclados con sus puntos de anclaje correspondientes (las flechitas blancas que salen al seleccionar un control UI) y que el control canvas que contiene dichos controles no esté configurado con [Canvas Scaler -> UI Scale Mode -> Scale With Screen Size].

      Respecto al multitouching, en principio no deberías tener problemas ya que, si el móvil te permite más de 1 touch a la vez (todos los modelos actuales ya deberían hacerlo), los correspondientes botones puestos con Unity deberían responder de manera independiente. Otra cosa es que mediante código estés haciendo algo que impida que se ejecuten las acciones de cada botón de manera simultanea, pero si no es así, el multitouch debería funcionar sin problemas.

  16. hola Santi Andrade genial haber encontrado este blog!, somos estudiante de informatica y estamos reslizando un prototipo de realidad aumentada de un museo, sera que nos podras ayudar, con tu conocimiento.

    • Gracias por leer mis artículos, Angel! Suena interesante lo de vuestro prototipo. Aunque nunca he tocado nada relacionado con realidad aumentada, si alguno de mis tutoriales os puede servir de ayuda para alguna de vuestras implementaciones, genial! 🙂

  17. Buenas Santi, tengo un problema: a la hora de hacer mi juego 2D, hice que mi muñeco se moviera con las teclas W A S D y puse que hiciera sus respectivas animaciones de andar. Ahora he implementado un pad direccional parecido al de este tutorial y no se como ponerle las animaciones que le puse al principio. Es decir, mi personaje simplemente se mueve sin hacer ninguna animacion. Podrias explicarme como se hace?

    • Hola Alvar0x, lo único que tienes que hacer es acceder al componente Animator de tu personaje desde el script «ControlarObjeto» y, dentro de cada una de las funciones (MoverDerecha(), MoverIzqda(), MoverArriba(), MoverAbajo()), lanzar la animación correspondiente. Saludos!

  18. Saludos amigos, me sirvio mucho el tutotial, de gran ayuda, pero me gustaria saber si no me podrias ayudara complementar una pequeñes a mi proyecto ¿Sabes como añadir animaciones? ejemplo que en vez de un cubo sea un personaje que tenga un estado de reposo y un estado caminando.

  19. First off I would like to say fantastic blog! I had a quick question in which I’d like to ask if you don’t mind.
    I was curious to find out how you center yourself and clear your mind before writing.
    I have had a tough time clearing my mind in getting my
    thoughts out there. I do take pleasure in writing however it just seems like
    the first 10 to 15 minutes are usually lost simply just trying to figure out how to
    begin. Any recommendations or tips? Many thanks!

  20. To follow up on the up-date of this subject on your web site
    and would want to let you know just how much I appreciated the
    time you took to write this useful post. Within the post, you really spoke on how
    to definitely handle this matter with all convenience. It would be my personal pleasure to
    accumulate some more strategies from your website and come as
    much as offer other individuals what I discovered from you.
    Thanks for your usual good effort.

    My webpage; http://ky.sgz8.com/home.php?mod=space&uid=669277&do=profile&from=space

  21. I happen to be writing to make you understand what
    a remarkable experience my cousin’s child encountered using your blog.
    She discovered lots of pieces, which include what it is like to have a
    great helping spirit to get many people just learn about some
    complex things. You really exceeded visitors’ expectations.
    I appreciate you for providing the helpful,
    safe, informative not to mention cool tips on that topic to Ethel.

    Also visit my blog Vita Silk Lux

  22. Wonderful article! This is the kind of information that are supposed to be shared around the
    web. Disgrace on Google for not positioning this publish
    upper! Come on over and consult with my site .
    Thanks =)

    Take a look at my page :: Isobel

  23. This is really interesting, You’re an excessively professional blogger.
    I have joined your rss feed and look forward to
    in the hunt for extra of your great post. Additionally, I have shared your
    website in my social networks

  24. I’ve been exploring for a little for any high quality articles or blog posts in this kind of house .
    Exploring in Yahoo I eventually stumbled upon this website.
    Studying this information So i am happy to show that I have an incredibly good uncanny
    feeling I discovered just what I needed. I such a lot indubitably will make sure to don?t overlook this site and give it a look regularly.

    Feel free to surf to my blog post rucame.club

  25. Hi! This post couldn’t be written any better! Reading through this post reminds me of my old room mate!
    He always kept talking about this. I will forward this article to him.
    Pretty sure he will have a good read. Thank you for sharing!

    Visit my site; Denisha

  26. hello there and thank you for your info – I have certainly picked up anything new from
    right here. I did however expertise a few technical issues using this site,
    as I experienced to reload the web site many times previous to I could get
    it to load properly. I had been wondering
    if your web hosting is OK? Not that I am complaining, but sluggish loading instances times will
    very frequently affect your placement in google and could damage
    your quality score if ads and marketing with
    Adwords. Anyway I’m adding this RSS to my e-mail and can look out
    for much more of your respective exciting content. Ensure that you update this again soon..

    Also visit my blog: http://www.meteoritegarden.com/userinfo.php?uid=2697297

  27. Thanks for each of your hard work on this web page.

    My daughter take interest in setting aside time for investigation and
    it is obvious why. Most people know all regarding the lively
    mode you create informative tricks via the web site and invigorate participation from website visitors about this
    situation plus our own simple princess is now being taught
    a whole lot. Enjoy the rest of the new year. You have been doing a
    terrific job.[X-N-E-W-L-I-N-S-P-I-N-X]I’m extremely impressed with your writing talents as well as with the structure on your weblog.
    Is that this a paid theme or did you customize it yourself?
    Anyway keep up the nice high quality writing, it is uncommon to look a
    nice weblog like this one today.

    Here is my blog post … Divine Dynamic Keto Pills

  28. I loved as much as you will receive carried out right here.
    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get bought an nervousness over
    that you wish be delivering the following.
    unwell unquestionably come further formerly again since exactly the
    same nearly a lot often inside case you shield this increase.

    Here is my webpage Arctic Air Pure Chill Cost

  29. Simply want to say your article is as astonishing. The clearness in your post is just cool and i can assume you are an expert on this subject.
    Fine with your permission let me to grab your RSS feed to
    keep up to date with forthcoming post. Thanks a million and please carry on the rewarding work.

    Also visit my page; MaxExtend

  30. Admiring the commitment you put into your website and in depth information you present.
    It’s nice to come across a blog every once in a while that
    isn’t the same outdated rehashed material. Excellent read!
    I’ve saved your site and I’m adding your RSS feeds to my Google account.

    Here is my web-site http://www.myzoo.it/

  31. I’ve been exploring for a little bit for any high-quality articles
    or weblog posts on this sort of space . Exploring in Yahoo I finally stumbled upon this site.
    Reading this info So i am happy to exhibit that I’ve an incredibly just
    right uncanny feeling I found out exactly what I needed.
    I such a lot without a doubt will make sure to do not put out of your mind this website
    and provides it a look on a relentless basis.

    Here is my blog; Eggplant Explosion

  32. Hey I know this is off topic but I was wondering if you knew of any
    widgets I could add to my blog that automatically tweet my newest
    twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe
    you would have some experience with something like this.
    Please let me know if you run into anything. I truly enjoy reading your blog and
    I look forward to your new updates.

    Here is my web site … Breeze Max Portable AC

  33. What i don’t understood is in reality how you’re now not really a
    lot more well-liked than you might be now. You are very intelligent.
    You understand thus considerably relating to this subject, made me in my view consider it from a lot of varied angles.
    Its like men and women aren’t fascinated unless it is something to accomplish with Woman gaga!
    Your own stuffs nice. Always care for it up!

    my web blog: https://forum.techzooka.com/index.php?action=profile;u=94011

  34. Good ? I should certainly pronounce, impressed with your web site.

    I had no trouble navigating through all tabs and related
    info ended up being truly easy to do to access.
    I recently found what I hoped for before you know it at all.
    Quite unusual. Is likely to appreciate it for those who add forums or anything, website theme .
    a tones way for your client to communicate.
    Nice task.

    My blog; Nitro Strive

  35. Appreciating the hard work you put into your site and detailed information you provide.
    It’s awesome to come across a blog every once in a while
    that isn’t the same outdated rehashed information. Excellent
    read! I’ve saved your site and I’m adding your RSS feeds to my Google account.

    Check out my blog – ViagRx Reviews

  36. Thank you a lot for providing individuals with such a marvellous
    chance to check tips from this website. It is always very beneficial
    and also full of fun for me personally and my office mates to visit your
    blog not less than thrice in a week to study the new stuff you have got.
    And definitely, I’m so always motivated for the beautiful strategies you serve.
    Certain 4 ideas in this article are indeed the
    most impressive I’ve had.

    Here is my web site; Jolt Alpha

  37. I seriously love your blog.. Great colors & theme.
    Did you build this website yourself? Please reply back as I’m attempting to create my very own website and would love to
    know where you got this from or exactly what the theme is called.
    Appreciate it!

    My website: shihan.com.ru

  38. Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that
    automatically tweet my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have
    some experience with something like this. Please let me know if you
    run into anything. I truly enjoy reading your blog and I
    look forward to your new updates.

    Also visit my webpage http://anapa-alrosa.com.ru/modules.php?name=Your_Account&op=userinfo&username=BryceShawna

  39. Wonderful goods from you, man. I’ve understand your stuff prior
    to and you’re simply too fantastic. I actually
    like what you have acquired here, certainly like what you are
    saying and the way during which you assert it.
    You are making it entertaining and you still care for
    to stay it sensible. I cant wait to learn much more from you.
    This is actually a terrific website.

    Feel free to visit my webpage khoquet.com

  40. I wanted to follow along and allow you to know
    how considerably I appreciated discovering your website today.
    I’d personally consider it a great honor to operate at my company and be able to utilize the
    tips shared on your site and also take part in visitors’ comments like this.

    Should a position associated with guest article writer become
    offered at your end, make sure you let me know.

    Here is my homepage :: ViagRx Review

  41. I don’t even know how I ended up here, but I assumed this publish was good.
    I do not know who you are but definitely you’re going to a well-known blogger for those who are
    not already 😉 Cheers!

    My web-site: Cognifen

  42. Good day! I know this is kind of off topic but I was wondering which blog
    platform are you using for this website? I’m getting fed up of WordPress because
    I’ve had problems with hackers and I’m looking at alternatives
    for another platform. I would be awesome if you could point me in the
    direction of a good platform.

  43. Hi this is kinda of off topic but I was wanting to know if blogs
    use WYSIWYG editors or if you have to manually code with HTML.
    I’m starting a blog soon but have no coding experience so I wanted to get
    guidance from someone with experience. Any help would be
    enormously appreciated!

    my web-site … Radical Slim Keto

  44. I am very happy to read this. This is the type of manual that needs to be
    given and not the random misinformation that’s at the other blogs.

    Appreciate your sharing this greatest doc.

    Feel free to visit my blog … VikingXL

  45. I would like to take the ability of saying thanks to you
    for that professional assistance I have usually enjoyed
    checking out your site. We are looking forward to the actual commencement of my school research
    and the entire planning would never have been complete without checking out your web blog.

    If I might be of any help to others, I might
    be happy to help as a result of what I have discovered from here.

    My website Lithederm Reviews

  46. Its like you read my mind! You appear to know a lot about this, like you wrote the book in it
    or something. I think that you can do with a few pics to
    drive the message home a little bit, but other than that, this is fantastic blog.

    A fantastic read. I’ll definitely be back.

    Here is my web page Jolt Alpha

  47. Авиабилеты дешево от проверенных авиакомпаний! https://avia-bilet.online/rossiya-sankt-peterburg – купить авиабилеты недорого. Купить авиабилеты дешево, авиабилеты онлайн. Поиск от 728 проверенных авиакомпаний по всему миру! Самые популярные направления перелетов по самым низким ценам в интернете!

  48. Admiring the time and effort you put into your blog and detailed information you
    provide. It’s good to come across a blog every once in a while that
    isn’t the same out of date rehashed material. Fantastic read!
    I’ve saved your site and I’m including your RSS feeds to my Google account.

    Also visit my web-site … Dream Lift Skin

  49. Undeniably believe that which you stated. Your favorite reason seemed to be on the web the easiest thing to be aware of.
    I say to you, I certainly get annoyed while people consider worries that they just do not know about.
    You managed to hit the nail upon the top as well as defined out the whole thing without having
    side effect , people could take a signal. Will probably be back to get more.
    Thanks

    Stop by my page :: https://rucame.club/

  50. Hmm it looks like your blog ate my first comment (it was super long) so I guess I’ll
    just sum it up what I had written and say, I’m thoroughly enjoying your blog.
    I too am an aspiring blog writer but I’m still new
    to the whole thing. Do you have any recommendations for beginner blog
    writers? I’d certainly appreciate it.

    my site; Muama Translator Reviews

  51. I loved as much as you’ll receive carried out right here.
    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get bought an shakiness over that you wish
    be delivering the following. unwell unquestionably come further formerly again since exactly the same nearly very often inside case you shield this hike.

  52. I’m really enjoying the theme/design of your
    web site. Do you ever run into any web browser
    compatibility issues? A handful of my blog visitors have complained about
    my website not working correctly in Explorer but looks
    great in Safari. Do you have any tips to help fix this problem?

    My web blog; Stephaine

  53. I would like to express thanks to you just for bailing me out of such a trouble.

    Right after researching through the world-wide-web and obtaining principles which were not productive, I believed my life was done.
    Living without the strategies to the problems you’ve solved by means of this
    guide is a serious case, and those that might have badly
    affected my career if I had not come across your blog post.
    Your actual expertise and kindness in taking care of
    the whole lot was very useful. I am not sure what I would’ve
    done if I had not come upon such a point like
    this. I am able to at this time look ahead to my future.
    Thanks for your time so much for this impressive
    and amazing help. I won’t think twice to refer your site to any
    individual who would like guidance on this issue.

    Feel free to visit my blog – Body Core Keto

  54. First of all I would like to say awesome blog! I
    had a quick question in which I’d like to ask if you don’t mind.
    I was interested to know how you center yourself and clear
    your thoughts prior to writing. I have had a difficult time
    clearing my mind in getting my thoughts out there.
    I truly do enjoy writing but it just seems like the first 10 to
    15 minutes are usually wasted simply just trying to figure out
    how to begin. Any recommendations or hints? Thank you!

  55. Write more, thats all I have to say. Literally, it seems as
    though you relied on the video to make your point.
    You obviously know what youre talking about, why throw
    away your intelligence on just posting videos to your weblog when you could be
    giving us something enlightening to read?

    Also visit my site; marchegabonais.com

  56. Great beat ! I would like to apprentice whilst you amend your site, how
    could i subscribe for a weblog web site? The account
    helped me a acceptable deal. I had been a little bit acquainted
    of this your broadcast offered brilliant transparent
    concept.

    My page :: Niagara XL

  57. With havin so much content and articles do you ever run into any issues
    of plagorism or copyright violation? My blog has a lot of exclusive content I’ve either created myself or outsourced but it seems a
    lot of it is popping it up all over the web without my authorization. Do you
    know any ways to help reduce content from being ripped
    off? I’d genuinely appreciate it.

    Visit my blog; Ice Box Air Cooler Review

  58. This design is steller! You definitely know how to keep
    a reader entertained. Between your wit and your videos, I was almost moved
    to start my own blog (well, almost…HaHa!) Great job. I really loved what you had to say, and more than that,
    how you presented it. Too cool!

    Also visit my web blog: Angelita

  59. Magnificent items from you, man. I’ve understand your
    stuff prior to and you’re just too wonderful.
    I really like what you have acquired right here,
    certainly like what you’re stating and the way during which you say it.
    You are making it enjoyable and you continue to care for to stay
    it smart. I can not wait to read much more
    from you. That is actually a wonderful site.

    Feel free to surf to my blog post; vip5.moisait2021.ru

  60. A motivating discussion is worth comment.
    I do think that you need to write more on this
    subject, it might not be a taboo matter but generally people don’t discuss
    such subjects. To the next! All the best!!

    Check out my web site Niagara XL

  61. I really love your website.. Great colors & theme. Did you build this amazing site yourself?
    Please reply back as I?m looking to create my very own website and would love to know where you got this from
    or just what the theme is named. Thanks!

    Also visit my page: Tru Vita CBD

  62. I cherished as much as you’ll receive performed right here.
    The caricature is tasteful, your authored material stylish.
    nevertheless, you command get got an impatience over that you wish be delivering the following.
    ill surely come more beforehand once more as exactly the similar nearly very incessantly inside case
    you protect this increase.

    My web-site … Divine Dynamic Keto

  63. I enjoy you because of all of the hard work on this web page.
    My mom loves setting aside time for research and it is easy to
    understand why. A number of us hear all of the lively form you deliver rewarding items by means of the
    blog and as well inspire contribution from other ones on the
    subject and my simple princess is actually becoming educated so much.
    Have fun with the remaining portion of the new year.

    You have been carrying out a good job.

    Feel free to visit my web blog … Essential Nutrition Keto Review

  64. I would like to thank you for the efforts you have put in writing this web site.
    I’m hoping the same high-grade website post from
    you in the upcoming as well. Actually your creative writing abilities has encouraged
    me to get my own blog now. Really the blogging
    is spreading its wings rapidly. Your write up
    is a great example of it.

    my web site – marchegabonais.com

  65. Appreciating the hard work you put into your website and detailed information you offer.

    It’s good to come across a blog every once in a while that isn’t the same outdated rehashed material.

    Wonderful read! I’ve saved your site and I’m including your RSS feeds to my Google account.

    My web page … ViagRx Pills

  66. It’s perfect time to make some plans for the future and it is
    time to be happy. I’ve read this publish and if I could I wish to counsel you some interesting things or suggestions.
    Perhaps you can write subsequent articles regarding
    this article. I want to read even more issues approximately it!

    Also visit my website :: Rhino Spark

  67. Fantastic blog! Do you have any helpful hints for aspiring writers?
    I’m planning to start my own site soon but I’m a little lost on everything.
    Would you recommend starting with a free platform like WordPress or go for a paid option? There are so many options out there that
    I’m completely overwhelmed .. Any suggestions? Thank you!

    Feel free to visit my web-site; Gentille Derma Review

  68. Galatasaray’dan teklif alan PAOK’un Mısırlı sol kanat oyuncusu Amr Warda’nın,
    transferine izin verilmemesiyle çılgına döndü.
    Warda, antrenmanda hocası Razvan Lucescu ile kavga boyutunda tartışma
    yaşadı. Sert görüşmenin ardından Warda sahadan ayrıldı ve takımın kaldığı otele döndü.
    Warda’nın öğleden sonraki idmana katılmadığı aktarıldı.
    Lucescu’nun Warda olayından sonra futbolculara bir konuşma yaptığı ifade edildi.

    transfer izni

  69. Great items from you, man. I have bear in mind your stuff prior to and you’re simply too excellent.

    I actually like what you have got here, certainly like
    what you are stating and the way in which by which you assert it.
    You make it enjoyable and you continue to take care of to stay it sensible.

    I can’t wait to read far more from you. That is actually a wonderful site.

    Check out my web site: Viking XL

  70. Whoah this blog is excellent i really like reading your articles.
    Stay up the good paintings! You already know, a
    lot of people are searching round for this info, you can help them greatly.

    Feel free to visit my webpage – Viking XL

  71. I have been exploring for a little for any high-quality articles or
    weblog posts on this sort of house . Exploring in Yahoo I eventually
    stumbled upon this web site. Studying this information So i am satisfied to express that I’ve a very just right uncanny feeling I discovered exactly what I needed.
    I such a lot without a doubt will make sure to don’t omit this website and give
    it a glance regularly.

    My blog post – flac.or.id

  72. Hi there I am so grateful I found your blog page, I really found you by error,
    while I was looking on Bing for something else, Anyhow I am here
    now and would just like to say thanks for a marvelous post and a all round enjoyable blog
    (I also love the theme/design), I don’t have time to go through it all at the
    minute but I have book-marked it and also included your
    RSS feeds, so when I have time I will be back to read more,
    Please do keep up the fantastic job.

    Take a look at my web-site – Divine Dynamic Keto

  73. A lot of thanks for all your valuable efforts on this web site.

    Gloria loves doing internet research and it’s really simple to grasp why.

    Most of us notice all regarding the lively way you render
    powerful tips on this web site and as well as inspire
    participation from visitors about this content then my
    girl is undoubtedly understanding so much. Enjoy the rest of the new year.
    You’re the one conducting a splendid job.[X-N-E-W-L-I-N-S-P-I-N-X]I’m really impressed
    along with your writing talents and also with the structure
    in your weblog. Is this a paid theme or did you modify it yourself?

    Either way keep up the nice quality writing, it’s uncommon to see a great weblog like this
    one nowadays.

    Also visit my blog – Divine Dynamic Keto

  74. Hello would you mind letting me know which webhost you’re working with?
    I’ve loaded your blog in 3 different web browsers and I must say this
    blog loads a lot faster then most. Can you
    recommend a good internet hosting provider at a fair price?
    Thank you, I appreciate it!

    Here is my web blog Herbivore Calm CBD

  75. Do you mind if I quote a couple of your articles as long as I provide credit and sources back to your site?
    My website is in the exact same niche as yours and my users would genuinely benefit from a lot of the
    information you present here. Please let me know if this alright with you.
    Many thanks!

    Review my web site; Alpha Extracts

  76. I have been exploring for a bit for any high-quality articles or blog posts
    on this kind of space . Exploring in Yahoo I eventually stumbled upon this website.
    Reading this info So i’m satisfied to show that I have an incredibly just right uncanny feeling I discovered just
    what I needed. I such a lot indisputably will make certain to do not
    omit this website and provides it a look regularly.

    Here is my site … tbkh.de

  77. you’re really a just right webmaster. The web site loading pace is incredible.
    It kind of feels that you are doing any unique trick. Furthermore, The contents are masterwork.
    you’ve performed a great activity in this topic!

    My web site :: Max Brute

  78. Hello this is kind of of off topic but I was wanting to
    know if blogs use WYSIWYG editors or if you have to manually code with HTML.

    I’m starting a blog soon but have no coding know-how so I wanted
    to get advice from someone with experience.
    Any help would be enormously appreciated!

    Here is my blog :: MaxBrute Reviews

  79. Excellent blog! Do you have any tips for aspiring writers?

    I’m planning to start my own website soon but I’m a little lost on everything.

    Would you propose starting with a free platform like WordPress or go
    for a paid option? There are so many options out there that I’m
    totally overwhelmed .. Any tips? Thanks a lot!

    Also visit my web site … Herbivore CBD Reviews

  80. Free Onlyfans Accounts 2021 | Account Login And
    Password, we will give you free premium onlyfans accounts.
    These onlyfans accounts belong entirely to us and are prepared for
    you. You can use our completely free onlyfans premium accounts.

    To use Onlyfans fan premium accounts, please try our account information below.
    Onlyfans is a website, thanks to this website, you will be able
    to see personal photos or videos of a famous person you are a fan of.
    All you have to do is buy an onlyfans premium account or use
    our free accounts below. In the Onlyfans environment, you need
    to have onlyfans premium account for the photos you like, admire or want
    to see. After logging into your Onlyfans account, enter a name in the search field.
    Then you will see the photos and videos that person wants to share
    with you.
    Free Onlyfans Accounts

  81. I know this if off topic but I’m looking into starting my own blog and was curious what all is needed
    to get setup? I’m assuming having a blog like yours would cost a pretty penny?
    I’m not very internet savvy so I’m not 100% certain.
    Any suggestions or advice would be greatly appreciated.
    Many thanks

    Also visit my website … Keto Lite Review

  82. Hello there, I think your site may be having internet browser compatibility problems.
    Whenever I look at your website in Safari, it looks fine however, when opening
    in Internet Explorer, it’s got some overlapping issues.

    I merely wanted to give you a quick heads up!
    Besides that, great site!

    Here is my webpage http://www.comptine.biz

  83. Hi there just wanted to give you a quick heads up and let you know a few of
    the pictures aren’t loading correctly. I’m not sure why but I think
    its a linking issue. I’ve tried it in two different
    browsers and both show the same results.

    Here is my blog – Viking XL

  84. Coc Free Accounts (Gems) 2021 | Clash Of Clans Passwords , We will give you free
    clash of clans accounts. These free accounts belong entirely to us and are specially prepared for
    you. If you say you do not have an account, you can use
    our accounts below. See below for clash
    of clans free account, one of the most popular games of recent times.
    If you don’t like the accounts below, create your personal coc account from
    the official site. Within these accounts, you can find accounts with gems or gold, diamonds.
    So this depends entirely on your luck. If you also trust your luck,
    you will win an account. Even if you don’t trust yourself, we’ll still give you
    a free account. As a result, you don’t have to worry, we are on your side.

    https://sites.google.com/view/coc-free-acc-1

  85. Do you mind if I quote a few of your posts as long as I provide credit and sources back to your webpage?

    My blog is in the very same area of interest as yours and my users would truly
    benefit from some of the information you provide here. Please let me know if
    this ok with you. Thank you!

    Take a look at my blog post: Alpha Extracts

  86. Fortnite Free Accounts 2021 | Free Account, Pass And Skin .
    So fortnite, heard with a new mode that emerged after the popularization of PUBG, is a game
    prepared by Epic Games. Being free, it has become famous in a short time and has
    managed to reach a large player base. So Fortnite
    free accounts continues to receive updates, and many innovations
    have been made. Actually, live concerts were held in the game and there
    were other types of events as well. So it received the Teen Choice Best Video Game Award in 2018.
    So And that same year, it received the Game Award for Best Multiplayer Game and Best Ongoing Game.

    Fortnite Free Accounts

  87. Oh my goodness! Incredible article dude! Thank you, However I am experiencing troubles with your RSS.
    I don?t know why I can’t join it. Is there anybody having
    the same RSS issues? Anyone who knows the answer will you kindly
    respond? Thanks!!

    Take a look at my website zicd.com

  88. Free Gmail Accounts 2021 | Google Mail Account id
    And Password , We will give you a free gmail account with the
    title. These gmail accounts belong entirely to us. We have collected
    these free gmail accounts for you and shared them
    exclusively for you. If you do not have a google gmail account, get one of the accounts below.

    After you get the account, you can log in to the
    account and enjoy yourself. All you have to do is log in nicely and look happy after that.

    You can expand your social or business environment with your
    Google Gmail account. If you have a business environment and your communication is very weak, you can strengthen the environment by
    using gmail. As a result, gmail will be very useful for
    you both in social life and business life.
    Free Gmail Accounts

  89. Oh my goodness! Awesome article dude! Thanks, However I am encountering issues with your RSS.
    I don?t know the reason why I cannot subscribe to it. Is there anybody getting the same RSS problems?
    Anyone who knows the answer will you kindly respond? Thanx!!

    Here is my webpage Leia

  90. I would like to thnkx for the efforts you have put in writing this
    web site. I am hoping the same high-grade blog post from you in the upcoming as well.
    Actually your creative writing skills has inspired me to get my own blog now.
    Really the blogging is spreading its wings rapidly. Your
    write up is a great example of it.

    My page http://shihan.com.ru/modules.php?name=Your_Account&op=userinfo&username=AwadOpal

  91. I must thank you for the efforts you have put in penning this site.
    I am hoping to see the same high-grade content from you
    in the future as well. In truth, your creative writing abilities has motivated me to get
    my own site now 😉

    Take a look at my web site; Max Brute

  92. Oh my goodness! Awesome article dude! Thanks, However I am encountering difficulties with your
    RSS. I don?t know why I am unable to join it.
    Is there anybody else getting the same RSS issues? Anyone
    that knows the answer can you kindly respond? Thanks!!

    my page: Gentille Derma

  93. Write more, thats all I have to say. Literally, it
    seems as though you relied on the video to make your point.
    You clearly know what youre talking about, why throw away
    your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

    Review my webpage – Solvolt Reviews

  94. Hey there I am so delighted I found your web site, I really found you
    by mistake, while I was browsing on Bing for something else, Anyhow I am here now and would just
    like to say many thanks for a marvelous post and a all round exciting blog (I
    also love the theme/design), I don’t have time to browse it all at the moment but I have bookmarked it and also
    added your RSS feeds, so when I have time I will be back
    to read much more, Please do keep up the awesome work.

    Here is my website … Divine Dynamic Keto Review

  95. I am writing to make you be aware of what a excellent experience
    my girl obtained browsing your site. She came to find some pieces, which include what it’s like to have an incredible giving heart to make folks
    completely learn several extremely tough subject matter.
    You really surpassed readers’ expected results. I appreciate you
    for supplying the priceless, trusted, educational
    not to mention easy thoughts on your topic to Jane.

    Here is my webpage – Cryogen Portable AC

  96. Bahçelievler Halı Yıkama
    20 yıllık tecrübesi ile Mis Oruç Halı ve
    Koltuk Yıkama İstanbul genelindeki müşterilerine, gelişen ve değişen koşullar altında daha kaliteli hizmeti daha ucuza sunma, tüketici menfaatlerini ön planda tutma ilkesiyle kurulmuştur.

    Halı yıkama (makine halısı, el dokuma halısı), yerinde halı
    ve koltuk yıkama, battaniye, yorgan yıkama sunduğumuz hizmetler arasında
    yer almakta olup, firmamız disiplinli ve
    hızlı çalışmasıyla sektöründe yıldızı parlayan bir firma haline gelmiştir.

    Bahçelievler Halı Yıkama

  97. I have to express my appreciation for your kind-heartedness for persons who require help
    on that study. Your very own dedication to getting the
    message all-around had become certainly beneficial and
    has permitted folks just like me to arrive at their objectives.
    The insightful guide can mean a great deal to me and
    far more to my fellow workers. Thank you; from everyone of us.

    Have a look at my page; SoloVolt Review

  98. We are a bunch of volunteers and opening a new scheme in our community.
    Your web site provided us with helpful info
    to paintings on. You have performed a formidable task and our whole community
    can be thankful to you.

    Feel free to surf to my web page – Slimingo Keto

  99. Thank you for sharing superb informations. Your website is so cool.
    I am impressed by the details that you have on this website.
    It reveals how nicely you understand this subject. Bookmarked this website
    page, will come back for extra articles. You, my pal, ROCK!

    I found just the information I already searched all
    over the place and just couldn’t come across. What an ideal web-site.

    my webpage; mayiling.cn

  100. Hey very cool blog!! Guy .. Beautiful .. Superb ..
    I will bookmark your site and take the feeds also?
    I’m satisfied to seek out so many useful information right here in the put up, we
    want develop more techniques on this regard, thanks for sharing.
    . . . . .

    Feel free to visit my web site … Slimingo Pills

  101. I was curious if you ever considered changing the page layout of your site?
    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of
    content so people could connect with it better.
    Youve got an awful lot of text for only having one or two images.
    Maybe you could space it out better?

  102. First off I want to say superb blog! I had
    a quick question which I’d like to ask if you do not mind.
    I was curious to know how you center yourself
    and clear your head prior to writing. I’ve had
    difficulty clearing my mind in getting my thoughts out.

    I do enjoy writing but it just seems like the first 10 to 15 minutes are
    lost just trying to figure out how to begin. Any ideas or hints?
    Cheers!

    Feel free to visit my blog; http://forum.adm-tolka.ru/viewtopic.php?id=320205

  103. [url=https://images.google.mg/url?q=http%3A%2F%2Fsexlan.ru%3Fc%3D238000&r=a5a138b0c269d5f460daad74b6e28d8a][img]http://i.bimbolive.com/images/frontend/static/faq/scrn6.jpg[/img][/url]

    Sexlan.Ru is an online video network connecting men and women from all floor the clique utterly high-speed live video tete-…-tete with completely audio support.

    When you in the beginning reach at our spot, you pleasure only be granted company privileges. This means that every time you submit engage a talk room, you inclination be understood a haphazardly handle, such as «Guest9505».

    Unfortunately, guests are not allowed to small talk, so the valid id‚e fixe to do would be to diary fitted free. All you poverty to do is choose a username and shibboleth and record your email address for the sake verification. Your username purposefulness ripen into your nickname. After you partake of logged in, you can change it to any other name. This pass on be your laid-back lifetime membership at Sexlan.Ru, drift that you can make back any time you want.

    Every now you login to your let off account, you thinks fitting procure access to a variety of features. We barely query you to take, so we can victual a pally community.

    Invent Your 100% Uncage Account. 100+ models are currently available for Tangible Copulation Webcams – Loaded Cams Sex. Yoke the largest worldwide webcam community!

    [i]You can start communication by following the [/i]
    https://www.google.is/url?q=http%3A%2F%2Fsexlan.ru%3Fc%3D238000&r=ceb3d26bf701ef3ae5d832949fb4cfe7

  104. Hey I know this is off topic but I was wondering if you knew of any widgets I
    could add to my blog that automatically tweet my newest twitter updates.
    I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with
    something like this. Please let me know if you run into anything.
    I truly enjoy reading your blog and I look forward to your new updates.

    Also visit my website: MaxBrute Male Enhancement

  105. [url=https://images.google.ws/url?q=http%3A%2F%2Fsexlan.ru%3Fc%3D238000&r=3e189720007136b820448d0fa97a801f][img]http://i.bimbolive.com/images/frontend/static/faq/scrn6.jpg[/img][/url]

    Sexlan.Ru is an online video network connecting men and women from all over the humankind through high-speed spend video bull session with extensive audio support.

    When you first turn up at our spot, you commitment simply be granted guest privileges. This means that every while you submit engage a colloquy room, you will be given a unspecified monicker, such as «Patron9505».

    Unfortunately, guests are not allowed to rap, so the valid loathing to do would be to programme for free. All you demand to do is settle upon a username and shibboleth and enter your email address for verification. Your username will transform into your nickname. After you from logged in, you can revolution it to any other name. This pass on be your unshackled lifetime membership at Sexlan.Ru, implication that you can appear second any time you want.

    Every now you login to your unrestrained account, you desire have access to a heterogeneity of features. We however query you to till, so we can victual a affable community.

    Create Your 100% Delivered Account. 100+ models are currently available throughout Finish Copulation Webcams – Existent Cams Sex. Join the largest worldwide webcam community!

    [i]You can start communication by following the [/i]
    https://www.google.com.na/url?q=http%3A%2F%2Fsexlan.ru%3Fc%3D238000&r=7c19f6cea8f4df2181959106ee9a71f8

  106. Bahçelievler Halı Yıkama
    20 yıllık tecrübesi ile Mis Oruç Halı ve Koltuk Yıkama İstanbul genelindeki müşterilerine, gelişen ve değişen koşullar altında
    daha kaliteli hizmeti daha ucuza sunma, tüketici menfaatlerini ön planda tutma ilkesiyle kurulmuştur.

    Halı yıkama (makine halısı, el dokuma halısı), yerinde
    halı ve koltuk yıkama, battaniye, yorgan yıkama sunduğumuz hizmetler arasında
    yer almakta olup, firmamız disiplinli ve hızlı çalışmasıyla sektöründe yıldızı parlayan bir firma haline gelmiştir.

    Bahçelievler Halı Yıkama

  107. That is a really good tip especially to those new to the blogosphere.
    Brief but very precise information? Thank you for sharing this one.

    A must read article!

    Feel free to visit my page – Marta

  108. Right here is the right site for anyone who wants to understand this topic.
    You understand so much its almost hard to argue with you
    (not that I personally would want to…HaHa). You certainly put a
    brand new spin on a subject that has been written about for decades.
    Wonderful stuff, just wonderful!

    Check out my site; Xoth Keto BHB Review

  109. I’ve been exploring for a bit for any high-quality articles or weblog posts on this kind of area
    . Exploring in Yahoo I eventually stumbled upon this web site.

    Studying this information So i’m happy to convey that I have an incredibly good uncanny feeling I came upon exactly what I needed.
    I most undoubtedly will make certain to do not omit this
    web site and provides it a look regularly.

    Also visit my homepage :: Viking XL

  110. Instagram Follower Kaufen
    Instagram-Follower kaufen: mehr Trust und Reichweite für
    Ihre Brand
    Das Ziel, die Reichweite auf Instagram zu erhöhen, ist für viele Unternehmen und Influencer
    häufig nur schwer zu erreichen. Follower zu kaufen ist eine bewährte
    Methode, um die Instagram-Präsenz aufzubessern und mehr Menschen und
    potenzielle Kunden im beliebten sozialen Netzwerk zu erreichen.
    Instagram Follower Kaufen

  111. Instagram Follower Kaufen
    Instagram-Follower kaufen: mehr Trust und Reichweite für Ihre Brand
    Das Ziel, die Reichweite auf Instagram zu erhöhen, ist für
    viele Unternehmen und Influencer häufig nur schwer zu erreichen. Follower zu kaufen ist eine bewährte Methode, um die Instagram-Präsenz aufzubessern und mehr Menschen und potenzielle Kunden im beliebten sozialen Netzwerk zu erreichen.
    Instagram Follower Kaufen

  112. Have you ever considered creating an e-book or guest
    authoring on other blogs? I have a blog based on the same topics you discuss and would really like to have you share some stories/information. I know my visitors would value your work.
    If you’re even remotely interested, feel free to send me an email.

  113. instagram follower kaufen
    Instagram-Follower kaufen: mehr Trust und Reichweite für Ihre Brand
    Das Ziel, die Reichweite auf Instagram zu erhöhen, ist für viele Unternehmen und
    Influencer häufig nur schwer zu erreichen. Follower zu kaufen ist eine bewährte Methode, um
    die Instagram-Präsenz aufzubessern und mehr Menschen und potenzielle Kunden im beliebten sozialen Netzwerk zu erreichen.
    Instagram Follower Kaufen

  114. We’re a group of volunteers and starting a new scheme in our community. Your site provided us with valuable information to work on. You have done an impressive job and our whole community will be grateful to you.

  115. You actually make it seem really easy with your presentation however I in finding this matter to be actually something which I believe
    I’d by no means understand. It kind of feels too
    complex and extremely huge for me. I am taking a
    look forward for your next post, I’ll try to get the grasp of it!

  116. принудительное лечение от алкоголизма цена кодировка от алкоголизма https://obmenka.forum2x2.ru/t8052-topic купить от алкоголизма торпеда от алкоголизма http://www.knowed.ru/index.php?name=forum&op=view&id=13724 торпеда от алкоголизма цена лечение алкоголизма форум

  117. лечение алкоголизма по довженко капли от алкоголизма названия https://rekforum.ru/viewtopic.php?t=18113 алкоголизм лечение кодировка методы лечения алкоголизма https://fa-t.ru/viewtopic.php?id=12074 кодирование от алкоголизма в уфе кодирование от алкоголизма уфа зарипов

  118. Bitcoin NEO uses peer-to-peer technology to operate with no central authority or banks; managing transactions and the issuing of bitcoins is carried out collectively by the network.
    Emission 21 000 000 coins (max supply).

    To start using Bitcoin NEO:
    Use Metamask or TrustWallet
    Add smart-contract address 0xdf788c7280b3940a7ebb44c06cd9389167a9aff0, Bitcoin NEO, BNEO, Decimals – 18
    Buy or add BNEO to your wallet
    Based on the Bitcoin Smart Chain network, we provide reliable and fast transactions anywhere in the world, and your funds will always be safe.

    Site – https://bitcoin-neo.com/?from=x
    Buy tokens – https://bitcoin-neo.com/private-sale?from=x
    Airdrop – https://bitcoin-neo.com/airdrop?from=x

    Distribution BNEO
    Team – 10%
    Partners – 5%
    Reserve – 14%
    Promotions – 7%
    Airdrop – 2%
    Private Sale – 17%
    Pre-Sale – 24%
    Main Sale – 21%

    Resources:
    https://t.me/bneo_channel
    https://t.me/bneo_chat
    https://twitter.com/bneo_crypto
    https://bneo.medium.com/

  119. Do you want to call a tow truck in St. Petersburg cheap? We recommend ordering the evacuation call service on our website. We are the leader in the number of calls in St. Petersburg and the Leningrad Region. An inexpensive tow truck is ready to arrive at the call point within half an hour 24 hours a day. The prices for calling a tow truck can be found below: [url=https://www.toyotaownersclub.ru/board/user/5162-exbit/]ijnzaa[/url][url=http://evkrd.ru/content/vidy-evakuatorov-i-ih-prednaznachenie]vzvdni[/url][url=https://evakuator193.ru/krasnodar]vkuzuc[/url][url=http://xn--80adzq5e.xn--p1ai/%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F/%D1%8D%D0%B2%D0%B0%D0%BA%D1%83%D0%B0%D1%82%D0%BE%D1%80-%D0%BF%D0%BE%D0%B4%D0%BE%D0%BB%D1%8C%D1%81%D0%BA/]iuytqg[/url][url=https://www.nofollow.ru/detail92936.htm]ygblzn[/url][url=http://evakuator-auto.ru/stoimost.htm]afrnmz[/url][url=https://speed-eva.ru/pravila-vyzova-evakuatora]fedtej[/url][url=https://www.nofollow.ru/detail92936.htm]qagtzm[/url][url=https://xn—54-5cdak1d0ahuuk0k.xn--p1ai/ehvakuaciya-avtomobilya]aoeorj[/url][url=https://avtopomosch27.ru/publications/evakuaciya-avtotransporta/]grvokh[/url][url=https://ac-evakuator.ru/sportcar-evacuation]iozrpx[/url][url=https://evakavto92-32-32.ru/page-3.html]iavkih[/url][url=https://gruz-gaz.ru/pereezd_ofisa.html]zfdidd[/url][url=https://xn—123-53daej5dn9brhfphp9kd6b.xn--p1ai/item/117440]qagtzm[/url][url=http://forum.autodata.ru/2/4315/]tmbkkw[/url][url=https://autoevak-46.ru/]uzdxia[/url][url=https://xn—-7sbabgda3bx5bwwhe0kuab.xn--p1ai/index.php?id=4]mntfro[/url][url=https://gruz-gaz.ru/pereezd_ofisa.html]qjjbgt[/url][url=https://speed-eva.ru/pravila-vyzova-evakuatora]aexlds[/url][url=https://cars-evakuator.ru/nasha-kompaniya]bbslfa[/url][url=https://cars-evakuator.ru/nasha-kompaniya]bdilzn[/url][url=https://xn—54-5cdak1d0ahuuk0k.xn--p1ai/ehvakuaciya-avtomobilya]dqpupq[/url][url=http://evakuator-irbis.ru/evakuator-vidy-evakuatorov]ewyxyn[/url][url=https://xn—123-53daej5dn9brhfphp9kd6b.xn--p1ai/item/117440]hnoqfz[/url][url=http://moskva-evakuator.ru/%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8/]jhcxyw[/url][url=https://xn—-7sbabgda3bx5bwwhe0kuab.xn--p1ai/index.php?id=4]hnoqfz[/url][url=http://avtoevakuator142.ru/about/]iavkih[/url][url=https://avtopomosch27.ru/publications/evakuaciya-avtotransporta/]cerddb[/url][url=https://economevakuator.ru/nashi-uslugi/]rtoesu[/url][url=https://xn--33-6kcai2bm6e2a8d3a.xn--p1ai/]iekgpb[/url][url=http://xn--2-7sbag5bzaooh0h.xn--p1ai/onas/]hglksi[/url][url=https://evak24msk.ru/articles/3.html]txadag[/url][url=http://go2dd.de/home.php?mod=space&uid=228077]uookyp[/url][url=https://evakuator142.ru/uslugi/vyzov-yevakuatora-v-kemerovo.html]iozrpx[/url][url=https://xn—-7sbabgda3bx5bwwhe0kuab.xn--p1ai/index.php?id=4]fxqrao[/url][url=http://go2dd.de/home.php?mod=space&uid=228077]qagtzm[/url][url=http://go2dd.de/home.php?mod=space&username=MaximoAtmow]xrzeqh[/url][url=https://xn--33-6kcai2bm6e2a8d3a.xn--p1ai/]bbeowf[/url][url=https://evakuator-tut.ru/deshevyj-evakuator.html]idkvyq[/url][url=https://www.shumo.com/forum/home.php?mod=space&uid=767344&do=profile]bkrobo[/url][url=http://xn--80adzq5e.xn--p1ai/%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F/%D1%8D%D0%B2%D0%B0%D0%BA%D1%83%D0%B0%D1%82%D0%BE%D1%80-%D0%BF%D0%BE%D0%B4%D0%BE%D0%BB%D1%8C%D1%81%D0%BA/]bbslfa[/url][url=http://185.80.92.211:7080/?228077]idijle[/url][url=https://www.shumo.com/forum/home.php?mod=space&uid=767344&do=profile]vzvdni[/url][url=https://avtopomosch27.ru/publications/evakuaciya-avtotransporta/]rtkajt[/url][url=https://avtoevakuator22.ru/o-kompanii.html]trhfxh[/url]

  120. Бейсболка фирменная от производителя new castle 6-ти панельная серый/натуральный белый и фирменные кепки в 2021 г | Женские бейсболки, Бейсболка, Кепка Посуда фарфоровая, керамическая, кухонная, столовая – купить оптом дешевую посуду, сервизы в интернет магазине, доставка, оптовая цена в … в 2021 г | Посуда, Сервизы, Кружка https://www.pinterest.com/pin/614108099193181552/ Набор cool orbs: 2 бокала для виски, шарики для охлаждения напитка, щипцы. в 2021 г | Подарки сотрудникам, Подарки, Мягкий свет Флешка оригинальный «Криптекс»® compass lock, 64 Гб в подарок в 2021 г | Операционная система, Металл, Аксессуары https://www.pinterest.com/pin/700309810811637202/ Папка для документов berkeley А4 на молнии с блокнотом в 2021 г | Молния, Папка, Бумага Папка для документов berkeley А4 на молнии с блокнотом в 2021 г | Молния, Папка, Бумага

  121. Дорожная сумка-рюкзак revelstoke, черный и сумка мужская через плечо в 2021 г | Дорожные сумки, Сумки, Рюкзак Награда «Кубок» малый в 2021 г | Выпускные подарки, Подарки учителю, Оригинальные подарки https://www.pinterest.com/pin/629589222913007739/ Большой зонт-трость с системой защиты от ветра, синий в 2021 г | Зонты, Трость, Синий Бейсболка sandwich 6-ти панельная в 2021 г | Бейсболка, Корпоративные подарки, Бейджик https://pinterest.com/pin/629589222913007738/ Деловая ветровка мужская mistral 210, черная и куртки деловые для мужчин in 2021 | windbreaker jacket, jackets, windbreaker Модная сумка для шоппинга подарочная chennai, натуральный/красный в 2021 г | Модные сумки, Сумки

  122. I am extremely impressed with your writing skills as well as with the layout on your blog. Is this a paid theme or did you modify it yourself? Anyway keep up the nice quality writing, it’s rare to see a nice blog like this one these days.

  123. This is very interesting, You are a very skilled blogger.
    I’ve joined your rss feed and look forward to seeking more of your wonderful post.
    Also, I’ve shared your site in my social networks!

    my blog post :: Miles

  124. Сумка для ручной клади дорожная rewind, синяя в 2021 г | Сумка для ноутбука, Кожаные сумки, Хозяйственная сумка ОАЗИС Гифтс каталог – сувениры | oasis catalog – Интернет-магазин в 2021 г | Каталог, Склад, Сувениры https://pinterest.jp/pin/700309810811637229/ Брелок «Настоящая леди» со сменными декоративными насадками в виде платьев и сумочкой в 2021 г | Брелок, Виды платьев Подставка под мобильный телефон с usb hub на 4 порта и usb hub в 2021 г | Телефон https://pinterest.jp/pin/700309810811637227/ Пин на доске souvenirs Бейсболка стильная от производителя unit first, красная в 2021 г | Бейсболка, Печать

  125. Шкатулка для украшений champ в 2021 г | Деревянные шкатулки для бижутерии, Шкатулка, Подарки Бейсболка стильная от производителя unit first, красная в 2021 г | Бейсболка, Печать https://pinterest.ec/pin/629589222913007739/ Портативное зарядное устройство для мобильных телефонов «Камень» с разъемами: usb, микро-usb, мини-usb, iphone 4/… в 2021 г | Портативное зарядное устройство, Банка, Телефон Нетканая сумка maryville и холщовые мешки в 2021 г | Сумка-тоут, Холщовые сумки, Сумка для покупок https://pinterest.jp/pin/700309810811637227/ Брелок-измеритель уровня в 2021 г | Брелок, Брелоки для ключей, Подарки Подарочный чайный набор «Мудрые решения»: книга Афоризмы и притчи Конфуция и чай Пуэр в 2021 г | Подарки для мужчин, Дизайн знаков, Подарки