Noticias

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

Cómo independizar zonas de la pantalla en el teléfono

Iniciado por Argo214, Marzo 04, 2016, 01:56:00 PM

Tema anterior - Siguiente tema
Buenos días! A ver si me podéis ayudar. Estoy desarrollando un juego para Android donde tengo un mapa de fondo que lo puedo encuadrar tocando en la pantalla con el dedo (tipo Google Maps) y un panel lateral con un texto en scroll. El problema es que al pasar el dedo para hacer scroll en el texto, el encuadre del mapa se mueve. Cómo podría independizar las 2 cosas para que cuando toque la pantalla para hacer scroll no se me mueva el mapa?? Muchas gracias!! 

Hazte una función y llámala antes de empezar cualquiera de las dos acciones, en esta función miras la ubicación de los toques respecto a la pantalla, si está en la zona del scroll, ejectuas esta parte, sino ejecutas la del movimiento, así lo hice yo, si por casualidad no borré el proyecto en el que tenía ese script te lo paso por aquí.
En una búsqueda rápida he encontrado el (uno de tantos) proyecto abandonado, te dejo la función que es muy simple pero cumple:
//Zona del menu
    bool ZonaBotonera(Vector2 v)
    {
        if (v.y < alturaMenuBotones)
 //constante, el valor lo asignaba con la otra función en el start()
            return true;
        else
            return false;
    }
Te dejo también la altura de la "botonera" jaja, recuerdo que al probar en diferentes tamaños de pantalla a veces fallaba, hasta que implementé estas líneas:
public float AlturaBotonera()
    {
        return (boton.sizeDelta.y * boton.lossyScale.y);
    }
No sé cómo funcionará el panel, pero supongo que será igual, cambia los valores 'Y' por 'X' y ya lo tienes, esta última función estaba en otro script donde manejaba toda la interfaz, pero eso ya como tu lo organices.


[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35322" data-ipsquote-contentcommentid="127821">Hazte una función y llámala antes de empezar cualquiera de las dos acciones, en esta función miras la ubicación de los toques respecto a la pantalla, si está en la zona del scroll, ejectuas esta parte, sino ejecutas la del movimiento, así lo hice yo, si por casualidad no borré el proyecto en el que tenía ese script te lo paso por aquí.En una búsqueda rápida he encontrado el (uno de tantos) proyecto abandonado, te dejo la función que es muy simple pero cumple:
//Zona del menubool ZonaBotonera(Vector2 v)
    {
        if (v.y < alturaMenuBotones)
 //constante, el valor lo asignaba con la otra función en el start()
            return true;
        else
            return false;
    }
Te dejo también la altura de la "botonera" jaja, recuerdo que al probar en diferentes tamaños de pantalla a veces fallaba, hasta que implementé estas líneas:
public float AlturaBotonera()
    {
        return (boton.sizeDelta.y * boton.lossyScale.y);
    }
No sé cómo funcionará el panel, pero supongo que será igual, cambia los valores 'Y' por 'X' y ya lo tienes, esta última función estaba en otro script donde manejaba toda la interfaz, pero eso ya como tu lo organices.[/quote]Pues no lo consigo. Mi panel lateral con texto y botones está situado a la derecha y ocupa 250 px de ancho. Cómo lo tengo que hacer? Dónde tengo que colocar el script?

Te da algún error? Primero haz una prueba sustituyendo en la primera función la variable 'alturaMenuBotones' por los 250 px, pero ten en cuenta que tienes que saber cómo funcionan las coordenadas de la pantalla, empieza en la esquina superior izquierda y va aumentando, luego el valor que debes de poner para hacer la prueba es Screen.width - 250 y no tiene que ser menor que sino mayor que, esta función la puedes poner donde quieras, pero te aconsejo que lo hagas en el mismo script en el que gestionas los input del dedo. Si te funciona así haz la prueba usando la función, porque si escalas la UI te cambiarán los 250 px.


Etiquetas: