Noticias

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

Daño al "Player"

Iniciado por newuser, Diciembre 12, 2015, 02:13:27 PM

Tema anterior - Siguiente tema
Diciembre 12, 2015, 02:13:27 PM Ultima modificación: Diciembre 12, 2015, 03:03:51 PM por newuser
Buenos días,estaba programando una script de vida para que asi el jugador recibiese daño,lo probé una y otra vez iba directo al enemigo y parecia que funcionaba,pero cuando me quede parado para simular una situación en la que el jugador está observando el mapa para poder continuar,el enemigo venia pero no me quitaba vida fui probando y me di cuenta de que solo me hace daño cuando yo me muevo,lo cual es un problema porque ahora estaba programando un boss que arrojase lanzas y como que si te quedas quieto no te hacen nada,es más te lo podrias cargar sin moverte.Aqui el código:
static var vida :float = 250;//vida
var danoE : float;//daño enemigo normal
var danoB : float;//daño el 1ºboss
var danoT : float;//daño trampas y ambiente en general
var danoF : float;//daño del boss FINAL
var danoBB : float;//daño del 2ºboss
var danoBBB : float;//daño del 3ºboss
var danoTram : float;//dañotrampa
var danoproye : float;//daño proyectiles
var particula1 : GameObject;//Particula rayo
var Projectile2 : GameObject;//La magia de rayo
var iluminacion1 : GameObject;//Luz del jugador
var iluminacion2 : GameObject;//Luz del rayo
var iluminacion3 : GameObject;//Luz del rayo2
var jugadorragdoll : GameObject;//Jugador ragdoll
var guiSkin : GUISkin;
var blackTexture : Texture2D;
//DAÑOS
function OnTriggerStay(other : Collider){
    
    if(other.tag=="enemy"){
        vida -= danoE;
    }
        
    if(other.tag=="bboss"){
        vida -= danoBB;
    }
    
    if(other.tag=="bbboss"){
        vida -= danoBBB;
    }
    
    if(other.tag=="finalboss"){
        vida -= danoF;
    }    
    
    if(other.tag=="ambient"){
        vida -= danoT;
    }
}function OnTriggerEnter(other : Collider){    if(other.tag=="proyectile"){
        vida -= danoproye;
    }
    
    if(other.tag=="trap"){
        vida -= danoTram;
    }
    
    if(other.tag=="boss"){
        vida -= danoB;
    }
}
//MAGIA DE RAYOS
function Update () {
    if(Input.GetKey(KeyCode.Mouse2)){
        if(vida>0){
            var instantiatedparticula1 : GameObject = Instantiate(particula1, transform.position, transform.rotation );
            var instantiatedProjectile2 : GameObject = Instantiate(Projectile2, transform.position, transform.rotation );
            var instantiatediluminacion1 : GameObject = Instantiate(iluminacion1, transform.position, transform.rotation );
            var instantiatediluminacion2 : GameObject = Instantiate(iluminacion2, transform.position, transform.rotation );
            var instantiatediluminacion3 : GameObject = Instantiate(iluminacion3, transform.position, transform.rotation );
            animation.Play("magia");
            vida -= 15;
 
        }
    }
    
    if(vida <= 0){
        vida=0;
        var instantiatedjugadorragdoll : GameObject = Instantiate(jugadorragdoll, transform.position, transform.rotation );
        Destroy(gameObject);
    }
}
//VIDA EN PANTALLA
function OnGUI ()
{
    GUI.skin = guiSkin;
    GUI.Label(new Rect(Screen.width - 130, Screen.height - 150, 200, 50), vida.ToString ("F0"));
}
[/quote] Como se puede observar en la primera línea puse una static var para así probar y crear otra script en el cubo el cual mi "Player" va a recibir daño en la que tenía un OnTriggerStay y dentro VIDA.vida -= dano;Pero no lo consegui,ya no sé que hacer ¿una pequeña ayuda aunque sea?,muchas gracias.  

 ontriggerStay es para que despues de entrar en al funcion OnTriggerEnter y aun estas como "dentro" de la colision y sigues colisionando, por ello cada vez que te mueves se activa ese evento y te baja vida, entonces lo que haria es pasar lo que tengas en OnTriggerStay a OnTriggetEnter, en teoria cuando llegue la primera colision, la tendra que tomar y aplicarle el danio correspondiente.si lo que quieres es que se este bajando vida aun estando colisionando aunque el personaje no se mueva, ocuparias un booleano para activarlo cuando haces el primer contacto, verificarlo en el update si el booleano sigue prendido, aplicas danio con un temoralizador para que no lo haga cada frame, luego con OnTriggerExit desactivas el booleando... jsaludos  

Diciembre 12, 2015, 11:20:07 PM #2 Ultima modificación: Diciembre 12, 2015, 11:27:34 PM por newuser
[quote author=ACarranza date=1449949048" data-ipsquote="" data-cite="ACarranza" class="ipsQuote"> ontriggerStay es para que despues de entrar en al funcion OnTriggerEnter y aun estas como "dentro" de la colision y sigues colisionando, por ello cada vez que te mueves se activa ese evento y te baja vida, entonces lo que haria es pasar lo que tengas en OnTriggerStay a OnTriggetEnter, en teoria cuando llegue la primera colision, la tendra que tomar y aplicarle el danio correspondiente.si lo que quieres es que se este bajando vida aun estando colisionando aunque el personaje no se mueva, ocuparias un booleano para activarlo cuando haces el primer contacto, verificarlo en el update si el booleano sigue prendido, aplicas danio con un temoralizador para que no lo haga cada frame, luego con OnTriggerExit desactivas el booleando... jsaludos :)

Etiquetas: