Creare Videogiochi - Game Developer
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 Smile


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 Tongue


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 Wink


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 Smile


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 Smile
Ti ricordo che la funzione "Debug.Log("in collisione");" è del tutto opzionale perciò, se vuoi, puoi anche toglierla.