Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: newuser en Diciembre 12, 2015, 02:13:27 PM

Título: Daño al "Player"
Publicado por: newuser en Diciembre 12, 2015, 02:13:27 PM
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.  
Título: Daño al "Player"
Publicado por: ACarranza en Diciembre 12, 2015, 08:37:28 PM
 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  
Título: Daño al "Player"
Publicado por: newuser en Diciembre 12, 2015, 11:20:07 PM
[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 :) Sólo texto | Texto con Imágenes