Exemple #1
0
 //Coge el estado del gancho y llama a soltar el quimico
 void Update()
 {
     if (estadoAct != null)
     {
         estadoGancho = estadoAct.daEstado();
         SoltarQuimico();
     }
 }
Exemple #2
0
    private void Update()
    {
        //Animaciones
        shooting = gancho.GetShooting();
        anim.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
        anim.SetBool("Grounded", landed);
        anim.SetBool("IsHurting", hurtanim);
        anim.SetBool("IsDead", deadanim);
        anim.SetBool("Jump", jump);
        anim.SetInteger("Shooting", shooting);

        //Nos aseguramos de que sea dinámico
        if (!enganchado && mov)
        {
            //Leo entrada de teclado para moverme en el ejeX
            moveX = Input.GetAxis("Horizontal");
            //Salto  si estoy en el suelo, landed lo comprueba

            jump   = Input.GetButtonDown("Jump");
            landed = Mathf.Abs(rb.velocity.y) < 0.01f;
            if (jump && landed)
            {
                puedeSaltar = true;
            }



            //esta serie de else if es para determinar la direccion donde mira el personaje
            //(para saber donde disparar el gancho)
            if (Input.GetAxisRaw("Horizontal") == 1) //Mira dcha.
            {
                //dirGancho = Vector2.right;
                dirGancho = Vector2.right;
                //esta condicion es necesaria porque sino mientras el gancho esta en ida/vuelta y el jugador rota, el gancho tambien
                if (gancho.daEstado() == HookState.Quieto)
                {
                    //cambia la rotacion en el eje Y del player cuando se mueve a la izquierda
                    transform.rotation = new Quaternion(transform.rotation.x, 0, transform.rotation.z, 0);
                }
                rb.constraints = RigidbodyConstraints2D.FreezeRotation;
            }

            else if (Input.GetAxisRaw("Horizontal") == -1) //Mira izq
            {
                dirGancho = Vector2.right;
                //esta condicion es necesaria porque sino mientras el gancho esta en ida/vuelta y el jugador rota, el gancho tambien
                if (gancho.daEstado() == HookState.Quieto)
                {
                    //pone la rotacion en el eje Y del jugador a 0 si se mueve a la derecha
                    transform.rotation = new Quaternion(transform.rotation.x, -180, transform.rotation.z, 0);
                }
                rb.constraints = RigidbodyConstraints2D.FreezeRotation;

                SoundManager.instance.RunSFX();
            }
            else if (Input.GetAxisRaw("Vertical") == -1) //Mira abajo
            {
                dirGancho = Vector2.down;
            }
            else if (Input.GetAxisRaw("Vertical") == 1) //Mira arriba
            {
                dirGancho = Vector2.up;
            }
        }
        //Se encarga de mover al jugador cuando está enganchado
        else if (enganchado)
        {
            float step = velocidadEnganchado * Time.deltaTime;
            posGancho = gancho.GetComponent <Transform>().position;
            if (transform.position.x < posGancho.x)
            {
                posGancho -= posGanchoInicio;
            }
            else
            {
                posGancho += posGanchoInicio;
            }
            transform.position = Vector2.MoveTowards(transform.position, gancho.transform.GetChild(0).position, step);
            if (Vector2.Distance(transform.position, gancho.transform.position) < 0.8f)
            {
                CambiaEstado(false);
                rb.isKinematic = false;
            }
        }
    }