Destroy - 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: Destroy (/thread-Destroy) |
Destroy - jacomucchio - 02-05-2016 Salve. Ho qualche problema con il metodo destroy. Ho creato uno script che alla collisione del player con la testa di un nemico il nemico viene distrutto. Fino a qua tutto ok...ma il problema sorge quando spawna il nemico e quando vado a collidere con la testa lo script sembra non funzionare. Girovagando in rete mi sembra di capire che questo problema sia dovuto al fatto che quando distruggo il nemico si distrugga anche il transform (scusate se potrei aver detto una cavolata ma sono "nuovo") . Potete darmi una mano? RE: Destroy - jacomucchio - 02-05-2016 Mi compare l'errore : the object of type transform has been destroyed but you are still trying to access it RE: Destroy - Master Gabriel - 03-05-2016 Potresti postare lo script che hai creato in modo da controllare se sono presenti eventuali errori? RE: Destroy - jacomucchio - 03-05-2016 certo, appena torno a casa. RE: Destroy - jacomucchio - 03-05-2016 Intanto se vuoi vedere l'errore é molto simile a quello descritto nel video di RikuThe Fuffs chiamato Destroy parte 2 di 2 dal minuto 7:44 RE: Destroy - jacomucchio - 04-05-2016 Ecco a voi lo script (scusate per i nomi strani) : using UnityEngine; using System.Collections; public class vitapermoneta : MonoBehaviour { GameObject moneta; GameObject nemico; // Use this for initialization void Start () { moneta = GameObject.FindWithTag ("moneta"); nemico = GameObject.FindWithTag ("nemico"); } // Update is called once per frame void Update () { } void OnCollisionEnter2D(Collision2D collisione) { if(collisione.gameObject.tag == "Player") Destroy(nemico); } } RE: Destroy - Master Gabriel - 05-05-2016 Questo script a che oggetto è attaccato? Al nemico? Comunque per solo una collisione non ti consiglio di usare il FindWithTag, ma un semplice script attaccato al player. Io ti consiglio qualcosa così: Codice: using UnityEngine; Basta che attacchi questo script al player, aggiungi la tag Enemy al nemico e tutto funzionerà Ovviamente sia il player che il nemico devono avere un collider RE: Destroy - jacomucchio - 05-05-2016 Grazie mille! Appena posso provo RE: Destroy - jacomucchio - 05-05-2016 Cè qualcosa che non va ma è colpa mia che non ho spiegato cosa volevo fare . Allora io ho creato il gameobject nemico e ho creato un altro child del nemico chiamato moneta che rappresenterebbe la testa. Quindi quello che volevo fare io è che alla collisione del personaggio con la moneta(testa) viene di strutto il nemico. RE: Destroy - Master Gabriel - 06-05-2016 Ah, perfetto! Pensavo che moneta fosse un'altro oggetto da raccogliere Codice: using UnityEngine; Dunque, la moneta-testa deve avere la tag Moneta, mentre il nemico la tag Enemy. Ora dovrebbe andare RE: Destroy - jacomucchio - 06-05-2016 Ok scusa se ti faccio perdere tempo. Chiudo con la solita frase : appena torno a casa provo RE: Destroy - jacomucchio - 06-05-2016 Ok la mia sfiga non ha limiti. Ho formattato il pc e prima di fare ciò ho salvato la cartella del gioco in chiavetta. Metto la chiavetta e mi accorgo che non funziona. Quindi ho perso buon parte dei file di gioco . Appena rimetto a posto ti faccio sapere. RE: Destroy - 93sunderland - 07-05-2016 ti consiglio di fare come me: ogni volta che fai grossi cambiamenti dal progetto, questo lo carichi su qualche drive, così mal che vada puoi recuperare il progetto quando vuoi RE: Destroy - jacomucchio - 08-05-2016 Il problema non si è risolto, mi scuso se vi faccio perdere tempo. Pubblico un video su youtube per farvi capire il problema. RE: Destroy - Master Gabriel - 08-05-2016 Fermo lì, ho capito il problema. Lo script se noti assegna alla variabile nemico l'oggetto che ha la tag "Enemy"... Ebbene il punto sta che quella funzione è in void Start(), quindi appena il gioco parte la esegue. Ma se il nemico non è ancora stato spawnato lo script non lo trova, e lascia la variabile nemico vuota. Il tutto si risolve semplicemente così: Sostituisci il pezzo di codice contenente questo: Codice: void Start() Con questo: Codice: void Update() Se non ho sbagliato qualcosa a scrivere(sono da mobile ) dovrebbe andare RE: Destroy - jacomucchio - 08-05-2016 Grazie mille funziona! Solo che si è creato un altro problema , ovvero che distrugge i Gameobject spawnati random. Per esempio se colpisco la testa (moneta) di uno si distrugge l'altro . Penso sia dovuto dal fatto che abbiano li stessi tag. RE: Destroy - Master Gabriel - 09-05-2016 Uhm, prova con questo: Codice: using UnityEngine; Non l'ho provato, quindi non so se è la soluzione RE: Destroy - jacomucchio - 09-05-2016 Ok provo ma il mio problema é uguale a quello del video di RikuTheFuffs (destroy parte 2) dal minuto 7 . Se hai tempo guardalo. RE: Destroy - jacomucchio - 10-05-2016 Sembra funzionare ... Domani provo con lo spawner dato che per ora ho improvvisato duplicando i gameobjects nella scena ;D RE: Destroy - Master Gabriel - 11-05-2016 Ok, fammi sapere Non sono ancora riuscito a guardare il video, appena riesco ci dò un'occhiata |