Noticias

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

Efecto portal UI

Iniciado por ytinU, Marzo 19, 2017, 01:58:53 AM

Tema anterior - Siguiente tema
Hola a todos!!
 
Mi duda es sobre como hacer un efecto similar a las de las cajas del CSGO.
 

 
Me explico, quiero que cuando el azul lo arrastre para el lado izquierdo, la parte que arrastré se vea en el lado derecho, solo quiero eso, lo de deslizar ya lo tengo hecho.

Si fuera un material podes modificar por codigo el offset del material. Desde el momento que clickeas tomas el desplazamiento del mouse con los Axis y apartir del AxisX (desplazamiento horizontal) modificas (sumas o restas el offset). En UI se usa OnpointerDown /up / enter , etc .... en Monobehaviour se usa OnMouseDown/ enter / ....
 
algo asi (en un meshrenderer):
 

bool active = false;
    void OnMouseDown()
    {
        active = true;
    }
    void OnMouseUp()
    {
        active = false;
    }
 
    void Update()
    {
        if (!active)
            return;      
        //Monobehaviour
        GetComponent<MeshRenderer>().material.mainTextureOffset = new Vector2(
            GetComponent<MeshRenderer>().material.mainTextureOffset.x + Input.GetAxis("Mouse X"),
            GetComponent<MeshRenderer>().material.mainTextureOffset.y
        );
    }

 
 
 
Para UI necesitas es la misma logica, tenes que declarar tu clase con la interfaz IPointerDownHandler,
 
https://docs.unity3d.com/ScriptReference/UI.Selectable.OnPointerDown.html
 
Una vez tengas eso podes modificar el material, el rect de la textura del sprite no se puede modificar (solo "get"), o por lo menos no se como se logra esto.
 
Todavia no conozco bien el efecto que decis pero supongo que sera algo asi...
 
 

Haber esto es exactamente las intefaces que estoy viendo desde la mañana, junto con IDragHandler, IPointerUpHandler, pero tanto up como down se reemplazan con OnClick(), no son materiales son Sprites que los enlace con un panel padre con scroll rect.. 
 

 
La primera imagen donde esta el naranja quiero que se vea la parte faltante del azul, la segunda en la parte de rojo que se vea la parte faltante del celeste.
 
Cita de: lightbug date=1489887528Una vez tengas eso podes modificar el material, el rect de la textura del sprite no se puede modificar (solo "get"), o por lo menos no se como se logra esto.
   


Te refieres al Albedo?, si es así me encantaria enseñarle a un PRO. Jajaja....

Marzo 19, 2017, 03:12:33 AM #3 Ultima modificación: Marzo 19, 2017, 03:14:35 AM por lightbug
Cita de: ytinU date=1489889222Te refieres al Albedo?
   


claro, por eso puse mainTextureoffset arriba, no se cual es la funcionalidad de dichos paneles en el juego, por eso no se si "sirve" lo que te puse, pero visualmente si tenes un panel, con un material asociado, este con la textura de todos los colores y haces lo del Onpointerdown/up se deberia lograr el efecto bien. Q hace todo eso en el juego o en lo que queres lograr?
 
El problema si supuiera modificar el sprite seria que tenes mas paneles individuales, lo cual el metodo no serviria de nada jaj. A buscar otra solucion.

Cita de: lightbug date=1489889553no se cual es la funcionalidad de dichos paneles en el juego
   


Son skins(:c) la bolita de arriba tiene un material que cambia según el sprite que contenga los botones de colores.
 
Cita de: lightbug date=1489889553pero visualmente si tenes un panel, con un material asociado
   


Son sprites que a la vez son botones, el material lo contiene la bolita de arriba.
 
Cita de: lightbug date=1489889553Q hace todo eso en el juego o en lo que queres lograr?
   


Las image del panel(skins) son 16 pero quiero que el jugador por más que le de a la izquierda sea como un bucle, entonces hacer un bucle debes? pero lo quiero con 4 skins y además que cuando una parte del skin desaparesca la otra parte aparesca pero al lado derecho..
 
Cita de: lightbug date=1489889553lo del Onpointerdown/up se deberia lograr el efecto bien
   


Tengo una duda respecto a esto, si no me equivoco detecta cuando clickeo y des-clickeo un canvas, así que no puedo ver como me ayudaria al presionar una imagen que a su vez es boton.

Cita de: ytinU date=1489890172Tengo una duda respecto a esto, si no me equivoco detecta cuando clickeo y des-clickeo un canvas, así que no puedo ver como me ayudaria al presionar una imagen que a su vez es boton.
   


No detecta el click del Canvas, detecta el click sobre el objeto UI dentro del canvas. La otra que queda es hacer algo parecido al scrolling de un juego 2D, lo que se va por la derecha se crea por la izq, aca es donde tenes q tener algun forma de ocultar (lo que sale y lo que esta por entrar). La forma en que lo hagas depende de vos, yo le pondria a cada color una posicion que se vaya actualizando y en base a eso crear el duplicado entrando/saliendo. Mira creo que el juego de @Braltor tenia algo parecido en la selecion de personajes, quizas él te diga como lo hizo, pero con sprites se me ocurre eso nada mas.

Cita de: lightbug date=1489889553El problema si supuiera modificar el sprite
   


'material'.setTexture("_MainTex",'cualquiersprite'.texture);

 
 

Cita de: ytinU date=1489892571

'material'.setTexture("_MainTex",'cualquiersprite'.texture);

   
       
   


Jaja NO, porque ahi estas modificando la textura principal del material, no el sprite del SpriteRenderer, eso es facil "GetComponent<SpriteRenderer>().sprite = ..." , igual lo que yo queria a lo primero era modificar el rect del sprite que se muestra, seria analogo a modifcar el offset del material, pero tus paneles tienen una funcionalidad por si solos entonces el metodo que propuse a lo primero no serviria.

Cita de: lightbug date=1489892845Jaja NO, porque ahi estas modificando la textura principal del material, no el sprite del SpriteRenderer, eso es facil "GetComponent<SpriteRenderer>().sprite = ..." , igual lo que yo queria a lo primero era modificar el rect del sprite que se muestra, seria analogo a modifcar el offset del material, pero tus paneles tienen una funcionalidad por si solos entonces el metodo que propuse a lo primero no serviria.
   


A tomar por saco mi granito de arena jajaja...

Etiquetas: