//------------------------------------------------------------------------------------------------------------------- /* * 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); } }