• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Script danno fuoco, lenta agonia
#1
Ciao ragazzi, ho un problemino, ho creato lo script per il fuoco, cioè quando il player entra nel collider dell'oggetto fiamme, automaticamente viene a mancare la vita, il problema è che non voglio che muoia subito (come succede) ma lentamente, ovviamente se riesce a scappare dalle fiamme bene altrimenti morirà.

Ecco il codice:
Codice:
var hitPoints : float = 30.0;



private var callFunction : boolean = false;

function OnTriggerStay (other : Collider) {
    if (other.CompareTag ("Enemy")) {
       other.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
      
    }
    
    if (other.CompareTag ("Player")){
    other.SendMessageUpwards("PlayerDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
  
    }
}

function ApplyDamage(){
    yield WaitForSeconds(0.5);
    
}

Praticamente ho bisogno di un timer che ogni tot secondi infligga il 30% dei danni, perche con lo script di ora con "OnTriggerStay" il player muore subito, invece con "OnTriggerEnter" mi infligge solo il 30% dei danni e poi diventi immortale alle fiamme.

Datemi delle dritte!
 
Rispondi
#2
Allora, prova a usare uno script molto semplice (E' in javascript):

#pragma strict

var vita = 100;
var danno = true;

function OnTriggerStay (other : Collider)
{
if(other.gameObject.tag == "Fuoco")
{
if(danno == true)
{
ApplyDamage();
}
}
}

ApplyDamage ()
{
danno = false;
vita - 5;
yield WaitForSeconds(1)
danno = true;
}


Lo script è più o meno questo, devi mettere al fuoco il collider trigger con la tag Fuoco e fare una guitext che mostri quanta vita hai. Se vuoi ti dico anche come fare. Smile
 
Rispondi
#3
(16-05-2015, 07:28 AM)Master Gabriel Ha scritto: Allora, prova a usare uno script molto semplice (E' in javascript):

#pragma strict

var vita = 100;
var danno = true;

function OnTriggerStay (other : Collider)
{
if(other.gameObject.tag == "Fuoco")
{
if(danno == true)
{
ApplyDamage();
}
}
}

ApplyDamage ()
{
danno = false;
vita - 5;
yield WaitForSeconds(1)
danno = true;
}


Lo script è più o meno questo, devi mettere al fuoco il collider trigger con la tag Fuoco e fare una guitext che mostri quanta vita hai. Se vuoi ti dico anche come fare. Smile

no no io ce l'ho gia il sistema di vita, funziona benissimo...L'unico mio problema è che il 30% di danno quando entri nel trigger "fuoco" venga ripetuto ogni 5 secondi, cosi che non muori subito ma dopo poco...se non fuggi dal fuoco....Ho bisogno di un ricalcolo temporizzato dello script in pratica
 
Rispondi
#4
Allora basta che metti nello yield wait for seconds 5 invece di 1.
 
Rispondi
#5
(16-05-2015, 07:07 PM)Master Gabriel Ha scritto: Allora basta che metti nello yield wait for seconds 5 invece di 1.

Guarda il mio script è questo: (Non so usando il tuo perche dovrei cambiare il sistema di vita)

Codice:
var hitPoints : float = 30.0;



private var callFunction : boolean = false;

function OnTriggerStay (other : Collider) {
    if (other.CompareTag ("Enemy")) {
       other.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
      
    }
    
    if (other.CompareTag ("Player")){
    other.SendMessageUpwards("PlayerDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
  
    }
}

function ApplyDamage(){
    yield WaitForSeconds(5);
    
}

ho inserito waitforsecond (5) ma non funziona...appena entro nel trigger muore....non ce un attimo d'attesa...Invece dovrebbe essere una cosa lenta...Mi puoi aiutare modificando il mio script?
 
Rispondi
#6
var dannoFuoco : float = 30.0;
var fuocoAttivo : boolean = true;

function OnTriggerStay (other : Collider)
{
if(fuocoAttivo == true)
{
if (other.gameObject.tag == "Enemy")
{
ApplyDamage();
fuocoAttivo = false;
}
}
}

function ApplyDamage()
{
VitaPlayer.vita -= dannoFuoco;
yield WaitForSeconds(5);
fuocoAttivo = true;
}

------------------------------------------------------------------------

Ho cambiato la variabile hitPoints con danno Fuoco, a me sembrava più comodo. Comunque se vuoi la puoi cambiare. Questo script funziona soltanto se il player ha attaccato un semplicissimo script di conteggio vita, nel senso tipo

static var vita : int = 100;

if(vita <= 0)
{
"Comando che fa morire il player, non so quale usi."
}

Lo script si deve chiamare VitaPlayer in modo che lo script modificato lo possa richiamare con il comando VitaPlayer.vita. In teoria se il fuoco ha la tag enemy e se il player ha uno script tipo questo(puoi anche semplicemente aggiungere queste poche righe di codice allo script che hai già, basta che sia in java script. Dimmi se te lo devo modificare in un modo diverso, però questo è il più semplice, se riesci a inserirlo poi è anche più facile da modificare se ti servirà in futuro. Fammi sapere Smile
 
Rispondi
#7
(18-05-2015, 07:30 AM)Master Gabriel Ha scritto: var dannoFuoco : float = 30.0;
var fuocoAttivo : boolean = true;

function OnTriggerStay (other : Collider)
{
if(fuocoAttivo == true)
{
if (other.gameObject.tag == "Enemy")
{
ApplyDamage();
fuocoAttivo = false;
}
}
}

function ApplyDamage()
{
VitaPlayer.vita -= dannoFuoco;
yield WaitForSeconds(5);
fuocoAttivo = true;
}

------------------------------------------------------------------------

Ho cambiato la variabile hitPoints con danno Fuoco, a me sembrava più comodo. Comunque se vuoi la puoi cambiare. Questo script funziona soltanto se il player ha attaccato un semplicissimo script di conteggio vita, nel senso tipo

var vita : int = 100;

if(vita <= 0)
{
"Comando che fa morire il player, non so quale usi."
}

Lo script si deve chiamare VitaPlayer in modo che lo script modificato lo possa richiamare con il comando VitaPlayer.vita. In teoria se il fuoco ha la tag enemy e se il player ha uno script tipo questo(puoi anche semplicemente aggiungere queste poche righe di codice allo script che hai già, basta che sia in java script. Dimmi se te lo devo modificare in un modo diverso, però questo è il più semplice, se riesci a inserirlo poi è anche più facile da modificare se ti servirà in futuro. Fammi sapere Smile
Non sono sicuro ma credo che si debba fare un getcomponent per utilizzare lo script della vita nello script del danno.
 
Rispondi
#8
No, in javascript utilizzando quel comando si può richiamare una variabile di uno script a parte a patto che la variabile sia
static var vita = 100;

Cioè statica. In effetti ho sbagliato, non l'ho messo nello script. Correggo subito
 
Rispondi
  


Vai al forum:


Browsing: 1 Ospite(i)