Bomba - Versione stampabile +- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi) +-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia) +--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D) +--- Discussione: Bomba (/thread-Bomba) |
Bomba - giggimito - 31-08-2015 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; } } } RE: Bomba - Master Gabriel - 31-08-2015 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); RE: Bomba - giggimito - 31-08-2015 praticamente il nemico passa sopra la Bomba, e si distrugge il nemico e non la bomba RE: Bomba - Zettamax - 31-08-2015 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 RE: Bomba - Master Gabriel - 31-08-2015 Quoto Zettamax, se fai come dice lui funziona. Ero io che non avevo capito bene cosa ti serviva RE: Bomba - giggimito - 31-08-2015 l'oggetto si distrugge ma l'effetto dell'esplosione non c'è RE: Bomba - Master Gabriel - 31-08-2015 Per quello devi fare un'animazione, ma è una cosa totalmente diversa RE: Bomba - giggimito - 31-08-2015 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'è RE: Bomba - Zettamax - 31-08-2015 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). RE: Bomba - giggimito - 31-08-2015 vero, allora devo aggiungere una variabile per l'effetto? RE: Bomba - Zettamax - 31-08-2015 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 RE: Bomba - giggimito - 31-08-2015 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 RE: Bomba - Zettamax - 31-08-2015 Potresti postare l'attuale codice dello script? RE: Bomba - giggimito - 31-08-2015 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); } } } RE: Bomba - Zettamax - 31-08-2015 Lo script mi sembra corretto, mi puoi dire più chiaramente che cosa succede(o non succede)? RE: Bomba - giggimito - 31-08-2015 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 RE: Bomba - AltairRevenge - 31-08-2015 Nel senso, il nemico non muore e la bomba non esplode? RE: Bomba - giggimito - 31-08-2015 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 RE: Bomba - AltairRevenge - 31-08-2015 strano, perchè il codice sembra corretto RE: Bomba - Zettamax - 31-08-2015 Prova ad aggiungere un rigidbody al nemico RE: Bomba - Master Gabriel - 31-08-2015 Sei sicuro di aver settato bene le tag? RE: Bomba - giggimito - 31-08-2015 ho aggiunto un rigidbody al cubo(Nemico) ma niente. ma ho notato un errore sulla console http://es.tinypic.com/view.php?pic=1498hol&s=8#.VeS_YfntlHw RE: Bomba - Snaptrex - 01-09-2015 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. RE: Bomba - Zettamax - 01-09-2015 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". RE: Bomba - giggimito - 01-09-2015 adesso funziona!!!! Grazie <3 RE: Bomba - Zettamax - 01-09-2015 Ottimo Ti ricordo che la funzione "Debug.Log("in collisione");" è del tutto opzionale perciò, se vuoi, puoi anche toglierla. |