• 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
Bomba
#1
quando il nemico massa sopra la bomba(Mina) non si distrugge.

lo script

void Start ()
{
particleSystem.Stop();
}


void OnTriggerEnter (Collider other)
{
if(other.tag == "Nemico")
{
particleSystem.Play ();
audio.PlayOneShot(Danno);
audio.PlayOneShot(Explosione);
Destroy (particleSystem);
Bomba = GameObject.Find ("BombaPre");
Bomba.GetComponent<MeshRenderer>().enabled = false;
}
}
}
 
Rispondi
#2
Invece di:
Bomba = GameObject.Find ("BombaPre");
Bomba.GetComponent<MeshRenderer>().enabled = false;

Potresti usare un:

var nemico : GameObject; //qua dichiari la variabile che ti servirà in seguito

nemico.SetActive(false); //devi però settare tramite inspector qual'è l'oggetto da distruggere

Oppure molto più semplicemente togli tutto questo:

particleSystem.Play ();
audio.PlayOneShot(Danno);
audio.PlayOneShot(Explosione);
Destroy (particleSystem);
Bomba = GameObject.Find ("BombaPre");
Bomba.GetComponent<MeshRenderer>().enabled = false;

e lo sostituisci con questo:

particleSystem.Play ();
audio.PlayOneShot(Danno);
audio.PlayOneShot(Explosione);
Destroy (particleSystem);
Destroy(other.gameObject);
 
Rispondi
#3
praticamente il nemico passa sopra la Bomba, e si distrugge il nemico e non la bomba
 
Rispondi
#4
Dallo script di Master Gabriel, invece di mettere "Destroy(other.gameObject);" metti "Destroy(this.gameObject);" e dovrebbe funzionare.
In caso di ulteriori problemi chiedi pure Smile
 
Rispondi
#5
Quoto Zettamax, se fai come dice lui funziona. Ero io che non avevo capito bene cosa ti serviva Tongue
 
Rispondi
#6
l'oggetto si distrugge ma l'effetto dell'esplosione non c'è
 
Rispondi
#7
Per quello devi fare un'animazione, ma è una cosa totalmente diversa Wink
 
Rispondi
#8
io dico utilizzando le particelle di unity3d. già possiedo l'effetto dell'esplosione. prima quando mettevo il nemico sopra la bomba partiva l'effetto dell'esplosione ma non si distruggeva la bomba. adesso la bomba si distrugge ma l'effetto non c'è
 
Rispondi
#9
OK, questo accade perchè, molto probabilmente, hai il particle system dentro l'oggetto "mina" e, quando viene chiamata la funzione Destroy(gameObject), viene eliminato sia l'oggetto "mina" che il particle system(ovvero l'effetto).
 
Rispondi
#10
vero, allora devo aggiungere una variabile per l'effetto?
 
Rispondi
#11
Fai così :
a inizio dello script (prima del void Start()) metti:
Citazione:public GameObject bum;
poi vai prima della funzione "Destroy(this.gameObject);" e metti:
Citazione:Instantiate(bum,new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z),Quaternion.identity);
Dall'editor di unity metti il prefab dell'effetto dell'esplosione come oggetto "bum".
Dovrebbe funzionare, se incontri difficoltà non esitare a chiedere Smile
 
Rispondi
#12
non funziona, http://es.tinypic.com/view.php?pic=2e2o7qw&s=8 qusnto ssposto il cubo nella bomba non succede niente mi scopare solo la scintilla
 
Rispondi
#13
Potresti postare l'attuale codice dello script?
 
Rispondi
#14
ecco

using UnityEngine;
using System.Collections;

public class IABomba : MonoBehaviour
{
public AudioClip Danno;
public GameObject Boom;
public AudioClip Explosione;

private GameObject Bomba;



void Start ()
{
particleSystem.Stop();
}


void OnTriggerEnter (Collider other)
{
if(other.tag == "Nemico")
{
particleSystem.Play ();
audio.PlayOneShot(Danno);
audio.PlayOneShot(Explosione);
Destroy (particleSystem);
Instantiate(Boom,new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z),Quaternion.identity);
Destroy(this.gameObject);
}
}
}
 
Rispondi
#15
Lo script mi sembra corretto, mi puoi dire più chiaramente che cosa succede(o non succede)?
 
Rispondi
#16
Non succede nulla, io metto lo script nella bomba.prefab applicando un box collider poi metto l'audio e l'effetto dell'esplosione. Avvio il gioco il nemico passa sulla bomba ma non succede nulla
 
Rispondi
#17
Nel senso, il nemico non muore e la bomba non esplode?
 
Rispondi
#18
Si,praticamente non succede nulla. Per il nemico non m'interessa se non muore perché la bomba non ha uno script per il danno,a me interssa che esplode la bomba
 
Rispondi
#19
strano, perchè il codice sembra corretto
 
Rispondi
#20
Prova ad aggiungere un rigidbody al nemico
 
Rispondi
#21
Sei sicuro di aver settato bene le tag?
 
Rispondi
#22
ho aggiunto un rigidbody al cubo(Nemico) ma niente. ma ho notato un errore sulla console http://es.tinypic.com/view.php?pic=1498h...eS_YfntlHw
 
Rispondi
#23
Da quel che ho capito vuoi che ci sia l'effetto della bomba,quindi in OnTriggerEnter nell'if scrivi other.GetComponent<Rigidbody>().AddExplosionForce(); cerca nella script reference il comando per avere un esempio di come funziona e di come settarlo.
 
Rispondi
#24
Davvero molto strano.
Non dovrebbe cambiare niente, ma prova a togliere le istruzioni:
1)"particleSystem.Stop();" (si trova in void Start())
2)"particleSystem.Play ();" (si trova in void OnTriggerEnter (Collider other))
3)"Destroy (particleSystem);" (si trova in void OnTriggerEnter (Collider other))

Poi all'interno dell' if(other.tag == "Nemico"){...} metti la funzione:
Debug.Log("in collisione");
Così dovresti vedere nella console, nel caso in cui ci sia la collisione, la scritta "in collisione".
 
Rispondi
#25
adesso funziona!!!! Grazie <3
 
Rispondi
#26
Ottimo Smile
Ti ricordo che la funzione "Debug.Log("in collisione");" è del tutto opzionale perciò, se vuoi, puoi anche toglierla.
 
Rispondi
  


Vai al forum:


Browsing: 2 Ospite(i)