Noticias

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

Establecer botón encima de panel con evento OnMouseDown()

Iniciado por TheCodeMaker, Junio 08, 2017, 08:26:51 AM

Tema anterior - Siguiente tema
Junio 08, 2017, 08:26:51 AM Ultima modificación: Junio 08, 2017, 08:28:59 AM por TheCodeMaker
Estoy desarrollando un juego para Android y tengo 2 paneles (el primero me cubre el lado izquierdo y el segundo el lado derecho de la pantalla) con un Box Collider 2D cada uno y un evento OnMouseDown() para detectar si el usuario ha pulsado en el lado izquierdo o derecho de la pantalla.
 
De esta manera al poner el dedo en el lado izquierdo el personaje salta y en el derecho dispara.
 
El problema es que quiero establecer un botón de pausa en la esquina superior derecha, pero al pulsar en el botón el personaje dispara también pues me entra en el OnMouseDown() del panel derecho. Así que necesito saber como ordenarlos para que el botón este por encima del panel o que al pulsar en la zona del botón no se ejecute el evento del panel.

Hola, si estas usando UI no es necesario meter colliders ni ningun OnMouseDown (no es un evento), tenes los event triggers y vas agregandos acciones y funciones a ejecutar para tal objeto, es mas esa es la gracia de usar la UI y no sprites 2D.
 
Cada componente Image (y seguro otros mas) tiene algo que se llama raycastTarget me parece, que le dice a tu graphics raycasters (en el canvas contenedor) si debe darle pelota a ese Image a la hora de detectar el puntero. Eso por si tenes otras imagenes encima y queres ignorarlas.
 
El orden de dibujado por las dudas es el siguiente, "mientras mas abajo mayor prioridad"
 
Cita de: TheCodeMaker date=1496903211El problema es que quiero establecer un botón de pausa en la esquina superior derecha, pero al pulsar en el botón el personaje dispara también pues me entra en el OnMouseDown() del panel derecho. Así que necesito saber como ordenarlos para que el botón este por encima del panel o que al pulsar en la zona del botón no se ejecute el evento del panel.
   


Eso suena a que el collider esta mal puesto mas que a otra cosa. Igual si estas usando UI te recomiendo pasarte a Event triggers ya que si tuvieras muchos objetos uno atras de otro no se como responderia el OnMouseDown, seguro con un if lo arreglas supongo, pero igual termina siendo desprolijo al final.

Lo he resuelto empleando Event triggers (OnPointerDown) tal y como has dicho, muchas gracias por la explicación.

Etiquetas: