Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
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;
}
}
}
Messaggi: 790
Discussioni: 70
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Dec 2014
Reputazione:
5
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);
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
praticamente il nemico passa sopra la Bomba, e si distrugge il nemico e non la bomba
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
31-08-2015, 03:37 PM
(Questo messaggio è stato modificato l'ultima volta il: 31-08-2015, 03:39 PM da giggimito.)
l'oggetto si distrugge ma l'effetto dell'esplosione non c'è
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
31-08-2015, 03:56 PM
(Questo messaggio è stato modificato l'ultima volta il: 31-08-2015, 04:00 PM da giggimito.)
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'è
Messaggi: 365
Discussioni: 28
Thanks Received:
8 in 8 posts
Thanks Given: 0
Thanks Received:
8 in 8 posts
Thanks Given: 0
Registrato: Jun 2011
Reputazione:
6
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).
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
31-08-2015, 04:11 PM
(Questo messaggio è stato modificato l'ultima volta il: 31-08-2015, 04:17 PM da giggimito.)
vero, allora devo aggiungere una variabile per l'effetto?
Messaggi: 365
Discussioni: 28
Thanks Received:
8 in 8 posts
Thanks Given: 0
Thanks Received:
8 in 8 posts
Thanks Given: 0
Registrato: Jun 2011
Reputazione:
6
Potresti postare l'attuale codice dello script?
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
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);
}
}
}
Messaggi: 365
Discussioni: 28
Thanks Received:
8 in 8 posts
Thanks Given: 0
Thanks Received:
8 in 8 posts
Thanks Given: 0
Registrato: Jun 2011
Reputazione:
6
Lo script mi sembra corretto, mi puoi dire più chiaramente che cosa succede(o non succede)?
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
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
Messaggi: 831
Discussioni: 31
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Feb 2013
Reputazione:
5
Nel senso, il nemico non muore e la bomba non esplode?
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
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
Messaggi: 831
Discussioni: 31
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Feb 2013
Reputazione:
5
strano, perchè il codice sembra corretto
Messaggi: 365
Discussioni: 28
Thanks Received:
8 in 8 posts
Thanks Given: 0
Thanks Received:
8 in 8 posts
Thanks Given: 0
Registrato: Jun 2011
Reputazione:
6
Prova ad aggiungere un rigidbody al nemico
Messaggi: 790
Discussioni: 70
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Dec 2014
Reputazione:
5
Sei sicuro di aver settato bene le tag?
Messaggi: 18
Discussioni: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Jan 2015
Reputazione:
0
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.
Messaggi: 365
Discussioni: 28
Thanks Received:
8 in 8 posts
Thanks Given: 0
Thanks Received:
8 in 8 posts
Thanks Given: 0
Registrato: Jun 2011
Reputazione:
6
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".
Messaggi: 90
Discussioni: 34
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2012
Reputazione:
0
01-09-2015, 04:00 PM
(Questo messaggio è stato modificato l'ultima volta il: 01-09-2015, 04:04 PM da giggimito.)
adesso funziona!!!! Grazie <3