Noticias

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

Problema con controles de movimientos

Iniciado por Bousing, Diciembre 09, 2015, 05:38:01 AM

Tema anterior - Siguiente tema
Diciembre 09, 2015, 05:38:01 AM Ultima modificación: Diciembre 09, 2015, 05:38:42 AM por Bousing
Saludos a todos.   Escribo porque necesito ayuda con los controles de movimiento de un juego en 2D que ando haciendo. Acoto primero que nada que he visto muchísimos scrips en este foro que ayudan pero simplemente no entiendo. Se que utilizan como controles (derecha,izquierda,salto) un Game Object y le añaden un componente que se llama GUITexture. Pero no entiendo el funcionamiento, vi videos en youtube, de verdad lo intente y no me funcionó.  Yo lo que hice fue crear un Game object  y quiero que ejecute este script cuando el usuario lo toque con el dedo:public GameObject player;
    public float speed = 0;
    private float posicion = 0;
    private Animator animator;
    //private bool Boton_Derecho;     void Start () {
        animator = player.GetComponent<Animator> ();//SE INICIALIZA EL Animator DEL PERSONAJE
    }
    
    // Update is called once per frame
    void Update () {
            animator.SetBool ("Right", true); //SE ACTIVAN LAS ANIMACIONES DE CAMINAR HACIA LA DERECHA
            animator.SetBool ("Left", false);//SE DESACTIVAN LAS ANIMACIONES DE CAMINAR HACIA LA IZQUIERDA
            animator.SetFloat ("Speed", speed);
            player.transform.Rotate (0, 0, 0); //EL PERSONAJE ROTA HACIA LA DERECHA
            player.transform.Translate (speed * Time.deltaTime, 0, 0); //EL PERSONAJE SE MUEVE HACIA LA DERECHA
        
    }
}al principio, lo probé con el API de touch así  void Update () {        int FingerCounter = 0; //CONTADOR QUE CUENTA LAS TOCADAS DEL BOTON        foreach(Touch touch in Input.touches){
            if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled && Boton.guiTexture.HitTest(touch.position)) {
                FingerCounter++;
                Boton_Izquierdo = true;
            }
        }
       
        if (FingerCounter > 0 && Boton_Izquierdo) {
            Vector3 temp = player.transform.position; //SE GUARDA LA POSICION DEL PERSONAJE EN EL EJE XY
            animator.SetBool("Left",true); //EL PERSONAJE VOLTEA HACIA LA IZQUIERDA
            animator.SetBool("Right",false); //SE DESACTIVAN LAS ANIMACIONES DEL PERSONAJE PARA CUANDO MIRA HACIA LA DERECHA
            animator.SetFloat("Speed",speed); //EL PERSONAJE CAMBIA DE ESTADO A CORRER            player.transform.Rotate(0,posicion,0); //EL PERSONAJE VOLTEA HACIA LA IZQUIERDA
            float atras = speed * -1; 
            player.transform.Translate(atras * Time.deltaTime,0,0); 
        }        if (FingerCounter == 0) {
            animator.SetFloat("Speed",0); //SE CAMBIA A IDLE
        }        Boton_Izquierdo = false; //SE VUELVE A PONER FALSO PARA OTROS MOVIMIENTOS
    } pero tampoco funciona. Si me pueden ayudar... agradecido porque tengo muchos días atascado. Saludos

Etiquetas: