Noticias

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

¿Hacer Touch en Sprite?

Iniciado por adriel0000, Enero 31, 2014, 10:36:48 PM

Tema anterior - Siguiente tema
Hola!  Bueno, pues esta vez estoy haciendo un pequeño juego en Android, pero hasta ahora como Unity no tenia soporte 2D, pues sabía hacer "touch" en un objeto 3D y que este respondiese, y me he puesto a intentar hacerlo con un Sprite 2D y no hay manera... Supongo que la solución será sencilla pero no la encuentro... :/ Lo unico que quiero hacer es que cuando haces touch, se genere un raycast y al colisionar con un objeto con un "tag" especifico, pues se ejecute una acción.
 
GRACIAS!

para mi si es en 2D sin usar 3D osea que lo que haces es pintar el sprite en pantalla puedes usar:
Input.mousePosition
Input.touches[0].position
que tienen su X y Y y comparas que este dentro del rango del sprite tambien creo que para esos 2 la coordenada "Y" esta invertida, pero has pruebas,
 
pero si es 2D usando 3D osea plataformas, agregas un boxcollider al personaje y lo de mas es la funcion "Physics.Raycast", yo tambien estoy haciendo mi juego para android, espero darle mas avances para volverlo a presentar

No entendí muy bien  Lo que hay en mi juego ahora mismo es básicamente un menú en 2D hecho con Sprites y una camara. Cada "boton" (Cada botón es un sprite) lleva un box collider. El problema es que no logro hacerlo funcionar mediante el Raycast ya que creo que no es igual el raycast en 3D que en 2D pero no encuentro la solución...

y si accedes al renderer y luego preguntas si el punto (ScreenToWorld) esta dentro del bound del renderer?

Febrero 10, 2014, 08:11:36 PM #4 Ultima modificación: Febrero 10, 2014, 08:13:22 PM por propicio
Amigo yo tambien estuve dandole a ese problema, y encontre la solucion
 
void Update()
{
  if (Input.touchCount == 1)
   {
      Vector3 wp = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
      Vector2 touchPos = new Vector2(wp.x, wp.y);
      if (Physics2D.OverlapPoint(touchPos))
       {
                if (Physics2D.OverlapPoint(touchPos).tag.Equals("ETIQUETA"))
           {
               //Tu codigo
           }
       }
   }
}
 
NOTA: el objeto al que quieras hacerle touch debe tener un rigidbody2D
 
Espero ayudarte, cualquier cosa me mandas un MP

Bueno creo que es la primera vez que escribo aqui pidiendo ayuda. porque mi problema es parecido solo que con ese codigo parece que no ocurre nada y me da error unity constantemente. el problema es que en mi juego tengo a los enemigos animados hechos con sprites y la idea es que al tocarles con el dedo se destruyan.  pero no lo consigo y tampoco encuentro nada buscando, he mirado libros,  google, youtube... y nada de nada. alguien sabria como se hace??

Etiquetas: