Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Mover personaje suavizado al arrastrar el dedo

Iniciado por xuturk, Marzo 11, 2016, 08:30:11 PM

Tema anterior - Siguiente tema
Marzo 11, 2016, 08:30:11 PM Ultima modificación: Marzo 11, 2016, 08:32:02 PM por xuturk
Hola a todos. Recurro a vosotros tras dias a la desesperada perdiendo horas sin conseguir nada. me gustaria conseguir un control semejante al de este juego:Avoid:https://appsto.re/es/xo3B7.i">https://appsto.re/es/xo3B7.ihttps://play.google.com/store/apps/details?id=com.noodlecake.avoid">https://play.google.com/store/apps/details?id=com.noodlecake.avoid Basicamente quiero que al mover el dedo mientras tengo pulsada la pantalla, el player se mueva hacia mi de una forma suave, no con los saltos que me produce el metodo transform.translate. he probado de todo, lo que mas se asemeja es usando vector.lerp pero tengo el problema al guardar la posicion puesto que pese a controlar que ha soltado el dedo con touch.phase.stationary, no consigo un buen funcionamiento.A ver si podeis ayudarme por que como digo, he encontrado resultados no tan malos pero no exactamente como lo quiero, y me parece tan simple que creo que no estoy pensando de la manera correcta.Os pasaria scripts, pero he probado tantos que ahora mismo no confiaria en ninguno, vamos, que e empezado a hacer la funcion de 0 otra vez. nota: no estoy usando fisicas en el gameobject, pero si fuera necesario para conseguir el movimiento, podria incluirlas. muchas gracias! Un saludo! 

Lo estás haciendo en 2D o en 3D?? Yo acabo de probar a mover una imagen por la pantalla, va fluido pero si mueves rápido el dedo se queda un poco atrás, esto puede ser algo más difícil de solucionar, quizás usando el deltaPosition? Lo único que he hecho ha sido crear una imagen (Image), con lo que se crea el canvas automáticamente, a la imagen le he puesto un script con las siguientes líneas:
    Vector2 posicion;
RectTransform miT;

// Use this for initialization
void Start () {
   miT = GetComponent<RectTransform> ();
}

// Update is called once per frame
void Update () {
   Toque ();
}

void Toque ()
{
   if(Input.touchCount>0)
   {
      posicion = Input.GetTouch (0).position;
      miT.position = posicion;
   }
}
Por último decir que el anchor presets o el pivote de la imagen está en el borde inferior izquierdo.

Hola,gracias por contestar.es en 2D pero uso el transform como si fuera 3D con el eje z siempre en 0  cuando me viene un vector2 le transformo en vector3 con z a 0. sobre rectTransforms supongo que estas manejamdo UI, no te recomiendo animar este tipo de elementos, por que mi experiencia es un poco mala, ahora si te va bien no digo nada pero creo que te manejarias mejor con gameobjects de sprites que no dependes de el aspect ratio tanto. un saludo

Hombre, no es para ningún proyecto, era sólo para ver si funcionaba, es una idea. Para que vaya fluido yo creo que debes asignar directamente la posición del objeto, no usar el Translate, pero debes pasar de las coordenadas de la pantalla al worldspace, de todas formas no sé si compilas el juego para ver cómo tira o si usas el UnityRemote ??

Si, probe directamente sin translate pero no queda nada suavizado, lo que hice fue usar las world points mediante lerp para hacer exactamente lo que dices pero interpolando y quedaba muy bien, el pronlema venia despues, que igual lo dejas pulsado y aleatoriamente salta a una posicion lejana, si mueves muy rapido el dedo igualmente.. Pruebo en ambos, tanto con unity remote como con nativo en un galaxy S2.Graciasun saludo

Etiquetas: