Noticias

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

Problema con Cargador de arma

Iniciado por Destroyer, Febrero 17, 2017, 03:37:42 AM

Tema anterior - Siguiente tema
Febrero 17, 2017, 03:37:42 AM Ultima modificación: Febrero 17, 2017, 03:45:19 AM por Destroyer
Hola, como dice el titulo, tengo un problema con el cargador de armas que lo voy explicar:
 
Cuando te queda por ejemplo 24 / 1, el arma carga 30/0, directamente, y se que mi sistema esta hecho así, pero no se me ocurre como modificarlo, ojala puedan ayudarme, Gracias !
 

function Update(){
if(Input.GetButton("Disparo1")){
   Tiempo += 1;
}
if(Tiempo > TiempoMaximo){
   Tiempo = ;
}
 
if(Tiempo == TiempoMaximo && Municion >= 1 && !Animacion.GetComponent.<Animation>().IsPlaying("5") ){
   Municion -= 1;
   VCargador ++;
   UIMunicion.text = Municion.ToString();
   transform.GetComponent.<AudioSource>().PlayOneShot(AudioDisparo);
   Efecto.active = true;
   var Disparo : RaycastHit;
   var Posicion = transform.parent.position;
   var Direccion = transform.TransformDirection(Vector3.forward);
   if(Physics.Raycast(Posicion,Direccion,Disparo,Rango)){
   var Rotacion = Quaternion.FromToRotation(Vector3.up, Disparo.normal);
      if(Disparo.collider.tag == "Tierra"){
         Instantiate(Objeto,Disparo.point,Rotacion);
      }
      
   }
   Animacion.GetComponent.<Animation>()["Take 001"].speed = AnimacionDisparar;
   Animacion.GetComponent.<Animation>().Play("Take 001", PlayMode.StopAll);
   Invoke("FX", 0.1);
   Tiempo = ;
   }
if(Input.GetKeyDown(KeyCode.R) && Cargador > ){
   UIMunicion.text = Municion.ToString();
   Animacion.GetComponent.<Animation>().Play("5", PlayMode.StopAll);
   Invoke("Recargar" , 1);
}
}
function Recargar(){
   
    Cargador -= VCargador;
Municion += VCargador;
VCargador = ;
   if( Cargador <= ){
 
   Cargador = ;
   }
UIMunicion.text = Municion.ToString();
UICargador.text = Cargador.ToString();
}

 
PD: Los ceros no salen ni idea porque :(

Febrero 17, 2017, 04:00:16 AM #1 Ultima modificación: Febrero 17, 2017, 04:01:14 AM por lightbug
Hola:
 
- y cual seria el camino correcto?
 
- que te quede 25/0 no?
 
- no entendi, vos queres que te cargue 30/0 y queres modificar el codigo que subiste?
 
- El cargador tiene cargadores o balas?
 
- que es tiempo maximo?
 
mira estuve leyendo por arriba el codigo, pero para formular un poco la solucion. Tenes dos variables municion y cargador. Supone que el cargador tuviera balas. EN el momento de cargar lo primero que haces es la diferencia entre Capacidad full (30) y las balas que tenes, eso te da lo que le tenes que restar al cargador.
 

function Recargar()
{
//si no hay balas en el cargador no se hace nada
if(cargador == 0)
   return;
int difmunicion = Capacidad - municion;   
//municion disponible
municion += difmunicion;   //aca no va condicion porque le agregas lo justo y necesario   
cargador -= difmunicion;
if(cargador < 0)
   cargador = 0;
                   
//Reproducir animacion
}

 
y si fuera del caso del cargador
 

function Recargar()
{
if(cargador == 0)
   return;
int difmunicion = Capacidad - municion;   
//municion disponible
municion += difmunicion;   //aca no va condicion porque le agregas lo justo y necesario   
cargador -= 1;      //a diferencia del anterior sacas de a un cargador
if(cargador < 0)
   cargador = 0;
                   
//Reproducir animacion
}
                   

 
Fijate que de JavaScript no cazo mucho, soy mas de C#, pero lo que vale es la idea
 
Saludos

Hola, me sigue el problema :/, osea es como que pasa esto
 
yo tengo en el arma 15/11,obviamente deberia tener 26 balas ,pero me da 30 balas, :/, osea 30 / 0
 

function Recargar(){
   if(Cargador == 0)
    return;
   var DifMunicion = (ComprobanteMunicion - Municion);
    Cargador -= DifMunicion;
Municion += DifMunicion;
ComprobanteMunicion = 30;
if( Cargador < 0 ){
Cargador = 0;
}
UIMunicion.text = Municion.ToString();
UICargador.text = Cargador.ToString();
}

 
 

No es necesario que pongas el "ComprobanteMunicion = 30" debe ser un valor dija de cada arma.
 
Ah claro, se me paso algo muy basico, tenes que verificar dos cosas, mejor dicho se puede dar de dos maneras la recarga:
 
1 - Tenes en el cargador mas de 30 balas
 
2 - tenes menos de 30 balas
 
Si es 1 te va a dar bien lo que hiciste, si es dos tenes que verificar si la diferencia es mayor a la cantidad de balas del cargador:
 
lo reescribo:
 

function Recargar(){
   if(Cargador == 0)
    return;
if(Cargador < ComprobanteMunicion){   //caso2
   Municion += Cargador;
        Cargador = 0;                            
                                       
}else{
       var DifMunicion = (ComprobanteMunicion - Municion);
       Cargador -= DifMunicion;
   Municion += DifMunicion;                                  
    }
                                       
   

UIMunicion.text = Municion.ToString();
UICargador.text = Cargador.ToString();
}

 
Fijate ahora

mm, ahora pasa esto por ejemplo tengo 29 / 28, entonces pasa a ser 57/0, osea se pasa las balas a la municion :/ no se si me explico

Cita de: Destroyer date=1487378108mm, ahora pasa esto por ejemplo tengo 29 / 28, entonces pasa a ser 57/0, osea se pasa las balas a la municion :/ no se si me explico
   


Jajaj es porque el limitante ahora es la municion bueno a ver ahora con esto deberia estar:
 

function Recargar(){
      if(Cargador == 0)
       return;
var DifMunicion = (ComprobanteMunicion - Municion);

if(DifMunicion >= Cargador)
{
   Municion += Cargador;
   Cargador = 0;
}else {         
   Municion += DifMunicion;
   Cargador -= DifMunicion;
}                                      
   

UIMunicion.text = Municion.ToString();
UICargador.text = Cargador.ToString();
}

 
Tene en cuenta que estoy con cosas de la facultad y me pego una vuelta por el foro y pongo el codigo que se me viene en el momento, pero este tipo de cosas suele pasar.

Ahora si, gracias man por darme la solucion y tambien por dedicar el tiempo a ayudar 


Etiquetas: