Noticias

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

Ayuda. No hay forma de hacer multi touch.

Iniciado por MatiasMartin, Agosto 16, 2015, 12:39:35 AM

Tema anterior - Siguiente tema
Hola, ante todo muy buenos días. Hace poco me pase al Unity 5 y mi vida es hoy un infierno jajaj. La cosa es que estoy creando un juego de autos y necesito que, por ejemplo, si estoy acelerando y aprieto el botón "girar a la derecha", el auto no deje de acelerar. Es decir, que la pantalla detecte las dos cosas y haga las dos. Ya probé mil cosas, for, foreach, CrossPlatForm, Canvas, UI y nada nada. Se que esta ahí la cosa pero no puedo hacerlo andar, mire tutoriales, pero no eran lo que buscaba y trate de adaptarlo pero nada. Alguien puede decirme que usan para que se puedan apretar dos botones a la vez en la pantalla para algo tan simple como acelerar y doblar al mismo tiempo? Desde ya muchas gracias. Si necesitan mi código les paso. Saludos. 

Agosto 16, 2015, 12:59:33 AM #1 Ultima modificación: Agosto 16, 2015, 12:59:54 AM por DavidV
Lo que yp utilizo es MouseButtonUpcreo un booleano. y lo inicializo en false. if(toco el boton) o dentro de public void (Si estas usando las ui de Unity4){bool = true;}if(bool = true){Mover el personaje;}if(input.GetMouseButtonUp(0)){Bool = false;}

Estudiante Ing. Sistemas 



El toco el botón seria con un Input.GetMouseButtonDown? Lo hice así y obviamente mueve el auto cuando acelero, pero el problema es que da igual donde toque la pantalla lo hace. Por lo que si solo acelero, ya dobla. 
 using UnityEngine;
using System.Collections;public class GirarDerecha : MonoBehaviour {    bool derecha = false;    void Update(){
        if(Input.GetMouseButtonDown(0)){
            derecha = true;
            if(derecha== true){
                MovimientoDelAuto.derecha = true;
                Debug.Log("Doblando a la derecha");
            }        
        }if(Input.GetMouseButtonUp(0)){
            derecha = false;
        }
    }
}


Necesito el boton solo para cambiar la variable bool "MovimientoDelAuto.derecha". 

Agosto 16, 2015, 03:36:15 AM #3 Ultima modificación: Agosto 16, 2015, 03:36:38 AM por DavidV
 Quíta el if(Input.GetMouseButtonDown(0)){
            derecha = true;.y pon el derecha = true; dentro de una función, usando los botones de la nueva UI.Aquí explico como:: http://unityspain.com/topic/15807-no-funciona-botón/Entonces en ves de poner eso en void Update, crea una nueva función,public void Doblarderecha(){   derecha = true;}y en el Update if(derecha== true){
                MovimientoDelAuto.derecha = true;
                Debug.Log("Doblando a la derecha");
            }        
        }if(Input.GetMouseButtonUp(0)){
            derecha = false;
        }

Estudiante Ing. Sistemas 



Antes que nada. Mil gracias por contestar. Me colgue tanto tratando de resolver que no vi tu solución y econtre la mia ja. Paso a explicar como lo solucione por si a alguien mas le sirve. Lo hice a la antigua por decirlo así. Ya aprendere a usar los UI. 

Para acelerar y retroceder agregue dos GUITextures(GameObject Empty con componente GUITexture), a ellas les agregue estos codigos:


 using UnityEngine;
using System.Collections;public class Acelerar : MonoBehaviour {    // Para inicializar
    void Start () {
    
    }
    // Cambia la variable global "acelerando" en el GameObject del auto para activar el if. 
    void OnMouseDown() {
        if (MovimientoDelAuto.acelerando == false) {
            MovimientoDelAuto.acelerando = true;
            Debug.Log ("Estas acelerando");
        }
    }    void OnMouseUp() {
        if (MovimientoDelAuto.acelerando == true) {
            MovimientoDelAuto.acelerando = false;
            Debug.Log ("Dejaste de acelerar");        }
    }     
    void Update () {
    
    }
}

"Para el de reversa se le cambia todo lo que diga acelerar jaja"

Y para girar use un codigo que encontre por acá. Igual mente, cree dos GUITexture de la forma que comente antes y en la MainCamera agregue este codigo:


 using UnityEngine;
using System.Collections;public class Giros : MonoBehaviour {    public GUITexture Derecha;
    public GUITexture Izquierda;    void Update()
    {
        if(Input.touchCount >= 0)
        {
           for (var i = 0; i < Input.touchCount; ++i){
                Touch G = Input.GetTouch(i);                if (G.phase == TouchPhase.Began) {
                    if(Derecha.HitTest(Input.GetTouch(i).position)){
                        MovimientoDelAuto.derecha = true;
                        Debug.Log ("Girando a la derecha");
                    }
                    if(Izquierda.HitTest(Input.GetTouch(i).position)){
                        MovimientoDelAuto.izquierda = true;
                        Debug.Log ("Girando a la izquierda");
                    }
                }
                if (G.phase == TouchPhase.Ended) {
                    MovimientoDelAuto.derecha = MovimientoDelAuto.izquierda = false;
                }
            }
        }
    }    
}Desde el inspector se le agregan los GUITexture y ya esta. 

Espero que a alguien le sirva.
[/quote] 

 [/quote]


[quote author=weufg" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15981" data-ipsquote-contentcommentid="110631">con el ui de unity 5 es facilisimo, te dejo el tuto que vi yo para enseñarme http://aev.org.es/unity-controlador-tactil-para-dispositivos-moviles-nuevo-sistema-ui/ date=1442323424]http://aev.org.es/unity-controlador-tactil-para-dispositivos-moviles-nuevo-sistema-ui/[/quote]Me baje el proyecto y no es multi touch. Osea, no sirve. Igualmente ya encontre como hacerlo con GUITexture en Unity 5. Si alguien lo necesita revise el post mas arriba. 

yo el proyecto no lo probe, pero esa es la forma que uso yo y te puedo asegurar que si es multi touch

Etiquetas: