Exemplo n.º 1
0
    public void morir_RPC()
    {
        //Si somos nosotros mismos los que hemos muerto
        if (pView.IsMine)
        {
            //Si tenemos la planta la soltamos
            if (estado == 3)
            {
                setEstado(2); //Establecer estado de disparar
                //Metodo que suelta la planta en el punto indicado
                gestionPlantas.soltarPlanta(GetComponent <ControlesPantalla>().getPuntoSoltarPlanta().position);
            }

            //Bloquear todos los controles del personaje
            GetComponent <ControlesPantalla>().setBloqueadoBrazo(true);
            GetComponent <ControlesPantalla>().setBloqueadoSalto(true);
            GetComponent <Movimiento>().setBloqueado(true);
        }

        //Mover los brazos hasta la posicion 0
        gameObject.transform.GetChild(0).rotation = Quaternion.Lerp(gameObject.transform.GetChild(0).rotation, Quaternion.identity, Time.deltaTime * 30);

        //Comprobar que el personaje no esta en movimiento y que los brazos estan rectos
        if ((GetComponent <Rigidbody2D>().velocity.y == 0) && gameObject.transform.GetChild(0).rotation == Quaternion.identity)
        {
            //Si somos nosotros mismos los que hemos muerto
            if (pView.IsMine)
            {
                GetComponent <Movimiento>().setVivo(false);                //Establecer que ha muerto el personaje
                GetComponent <ControlAnimaciones>().activarAnim("Muerte"); //Ejecutar animacion de muerte
                controlJuego.reaparecer();                                 //Llamada al metodo para reaparecer
            }
        }
    }
Exemplo n.º 2
0
    //----------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA REPETIDAMENTE CADA FOTOGRAMA DE LA EJECUCION
     */
    void Update()
    {
        foreach (Touch tactil in Input.touches)
        {
            //Si al pulsar el jugador acaba de reaparecer (estado 4) se desactiva
            if (GetComponent <EstadoJugador>().getEstado() == 4)
            {
                GetComponent <EstadoJugador>().setEstado(2); // Establecer el estado con arma
            }
            //Si se pulsa una parte de la UI no hacemos nada(interfaz grafica)
            if (EventSystem.current.IsPointerOverGameObject() ||
                EventSystem.current.currentSelectedGameObject != null)
            {
                return;
            }

            //Comprobar la parte de la pantalla que se toca para ejecutar una acción
            //Teniendo en cuenta el modo de control de juego seleccionado
            if ((tactil.position.x <= (Screen.width / 2) && modo) || (tactil.position.x > (Screen.width / 2) && !modo))
            {
                //Si el brazo esta bloqueado no hacemos nada
                if (bloqueadoBrazo && estadoJugador.getEstado() != 3)
                {
                    return;
                }
                //Comproobar si el brazo esta bloqueado porque llevamos la planta
                else if (bloqueadoBrazo && estadoJugador.getEstado() == 3)
                {
                    //============================== Soltar Planta ===============================//
                    estadoJugador.setEstado(2); //Establecer estado de disparar
                    //Llamada al metodo para soltar la planta al escenario
                    gestionPlantas.soltarPlanta(PuntoSoltarPlanta.position);
                    return;
                }

                //==========================  Movimiento Brazo ========================//

                //Cuando se toca la pantalla (BEGAN)
                if (tactil.phase == TouchPhase.Began)
                {
                    if (dedoControl == -1)
                    {
                        inicioInvert    = mov.getInvertido();                             //Marcar si en el inicio esta invertido el personaje
                        dedoControl     = tactil.fingerId;
                        puntoPartida    = tactil.position.y;                              //Obtener la posicion del primer toque en la pantalla
                        rotacionInicial = brazo.GetComponent <Transform>().eulerAngles.z; //Obtener la rotacion inicial del brazo
                    }
                }

                //Si aun NO hemos soltado el dedo
                if (tactil.phase != TouchPhase.Ended)
                {
                    if (tactil.fingerId == dedoControl)
                    {
                        pxDesplazados = tactil.position.y - puntoPartida; //Calculamos la distancia en pixeles recorrida entre punto actual e inicial
                        gradosMover   = pxDesplazados / equivalencia;     //Calculamos en función de los pixeles recorridos los grados de rotación a los que equivale

                        //Obtener la rotacion en negativo en lugar de en grados mayores a 180
                        if (rotacionInicial > 180)
                        {
                            rotacionInicial = rotacionInicial - 360;
                        }

                        /*
                         * ROTAR EL BRAZO
                         * Efectuar el movimiento del barzo en funcion de como este orientado el personaje
                         * y como estaba en el inicio del toque
                         */
                        if (mov.getInvertido() && !inicioInvert)
                        {
                            //Personaje invertido y no se ha iniciado invertido
                            //Invertimos la suma de la rotacion inicial mas los grados a mover
                            brazo.transform.eulerAngles = new Vector3(0, 0, Mathf.Clamp((rotacionInicial + gradosMover) * -1, -rotBrazoLimit, rotBrazoLimit));
                        }
                        else if (mov.getInvertido() && inicioInvert)
                        {
                            //Personaje invertido y se ha iniciado invertido
                            //Rotacion inicial menos los grados a mover
                            brazo.transform.eulerAngles = new Vector3(0, 0, Mathf.Clamp(rotacionInicial - gradosMover, -rotBrazoLimit, rotBrazoLimit));
                        }
                        else if (!mov.getInvertido() && inicioInvert)
                        {
                            //Personaje no esta invertido y se ha iniciado invertido
                            //Invertimos la resta de la rotacion inicial menos los grados a mover
                            brazo.transform.eulerAngles = new Vector3(0, 0, Mathf.Clamp((rotacionInicial - gradosMover) * -1, -rotBrazoLimit, rotBrazoLimit));
                        }
                        else
                        {
                            //Personaje no esta invertido y no se ha iniciado invertido
                            //Rotacion inicial mas los grados a mover
                            brazo.transform.eulerAngles = new Vector3(0, 0, Mathf.Clamp(rotacionInicial + gradosMover, -rotBrazoLimit, rotBrazoLimit));
                        }
                    }
                }
                else
                {
                    //==========================  Disparo  ========================
                    if (tactil.fingerId == dedoControl)
                    {
                        dedoControl = -1;
                        arma.disparo(mov.getInvertido());
                    }
                }
            }
            //Si se toca la otra parte de la pantalla se ejecuta el salto
            else
            {
                //==========================  Salto  ========================
                //Si el salto esta bloqueado no hacemos nada
                if (bloqueadoSalto)
                {
                    return;
                }

                mov.Saltar(); //Llamada al metodo para que salte el personaje
            }
        }
    }