Noticias

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

duda sobre mi script

Iniciado por tomas, Junio 24, 2016, 01:31:19 AM

Tema anterior - Siguiente tema
Junio 24, 2016, 01:31:19 AM Ultima modificación: Junio 24, 2016, 10:39:59 AM por pioj
hola, la script que arme mas o menos dice esto:
 

#pragma strict
private var survivalScript : Survivalcontroller;
var time : float = ;
var atack : boolean = false;
function Start () 
{
    survivalScript = GameObject.Find("FirstPersonCharacter").GetComponent(Survivalcontroller);
}
function Update () {
    time += Time.deltaTime;
    if(time>=1){
        atack = true;
        time = ;
    }
    if(time<1){
        atack = false;
    }
}
function OnTriggerStay ()
{
    if(atack==true){
        survivalScript.currentHealth -= 10;
    }
}

 
la cosa es que la variable atack nunca cambia a true o false siempre se mantiene en false, que es lo que esta funcionando mal?

Junio 24, 2016, 02:36:27 AM #1 Ultima modificación: Junio 24, 2016, 02:36:55 AM por GSG3D
Si ese es tu problema, la explicación es que la variable cambia de verdadero a falso al instante porque comprueba que el tiempo es < 1 luego de ponerla en verdadero.

Utiliza el Debug para ver que valores toma.


#pragma strict
private var survivalScript : Survivalcontroller;
var time : float = ;
var atack : boolean = false;
function Start ()
{
survivalScript = GameObject.Find("FirstPersonCharacter").GetComponent(Survivalcontroller);
}
function Update () {
    time += Time.deltaTime;
    if(time>= 1){
        atack = true;
        if(atack && time >= 3){
        time = ;
        }
    }
    if(time<1){
        atack = false;
    }
}
function OnTriggerStay ()
{
    if(atack==true){
        survivalScript.currentHealth -= 10;
    }
}

 
Hola tomas, mira el problema ahi es que la variable "time" al cumplir con la condición que pusiste (la de que sea mayor o igual a 1) y poner que como resultado se resetee la variable a 0 practicamente no le estas dando tiempo a "atack" de volverse true porque el reseteo es instantaneo. Probá modificar la script así como te lo puse (el 3 podes modificarlo por el que vos quieras, en el codigo ese tres cumple la función de hacer "esperar" un ndeterminado tiempo(el que vos quieras) antes de convertir la variable "atack" en false.
 
Un "Tip" en ves de poner un número(en este caso 3) podes crear una variable(por ejemplo "atack delay" o como la quieras llamar) y desde el inspector, seleccionar el tiempo que mejor te convenga de una forma más rápida y más cómoda : ) Espero haberte ayudado.

Etiquetas: