Example #1
0
    //-------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE PERMITIRA DISPARAR UNA BALA EN LA DIRECCION
     */
    public void disparo(bool invertido)
    {
        //Disparamos si se ha cumplido el tiempo de repeticion entre disparos y si tenemos balas
        if (tiempoDisparo <= 0 && estadoJugador.getNumBalas() > 0)
        {
            //Establecer el tiempo que se tendra que cumplir entre disparo y disparo
            tiempoDisparo = tiempoDisparoMax;

            //Obtener la inclinacion a la que debemos aplicar la fuerza de la bala comprendida entre 90º y -90º
            if (brazo.transform.eulerAngles.z >= 90)
            {
                inclinacion = brazo.transform.eulerAngles.z - 360;
            }
            else
            {
                inclinacion = brazo.transform.eulerAngles.z;
            }

            //Calcular velocidades necesaria para aplicar fuerza en el eje X e Y para que la bala siga la misma inclinacion
            if (inclinacion < 0)
            {
                porcentX = -1 * ((-90 - inclinacion) / 90);
            }
            else
            {
                porcentX = (90 - inclinacion) / 90;
            }

            porcentY = inclinacion / 90;

            //Si el personaje esta inverido, invertimos la velocidad del eje X e Y
            if (mov.getInvertido())
            {
                porcentX = porcentX * -1;
                porcentY = porcentY * -1;
            }

            //Calcular velocidad del elemento multiplicandola por la fuerza del disparo
            Vector2 velocidad = new Vector2(porcentX * fuerzaDisparo, porcentY * fuerzaDisparo);

            //Llamada al RPC que ejecuta el disparo en todas las maquinas
            pView.RPC("disparo_RPC", Photon.Pun.RpcTarget.AllBuffered, transform.position, brazo.GetComponent <Transform>().rotation, velocidad, invertido);

            //Ejecutar anaimacion en la pistola
            controlAnimaciones.animacionDisparar();

            //Reducir el numero de balas del jugador en 1
            estadoJugador.reducirBalas(1);
        }
    }