Jump to content
Sign in to follow this  
newuser

Daño al "Player"

Recommended Posts

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"));
}

 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.

 

 

Edited by newuser

Share this post


Link to post
Share on other sites

 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 :) 

Share this post


Link to post
Share on other sites

 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 :) 

Muchas gracias a ver que sale hahah

Por cierto me pasa exactamente los mismo con el TriggerEnter.

Edited by newuser

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...