Di più sugli oggetti

Quando crei un oggetto in modalità avanzata, puoi cambiare alcune impostazioni avanzate aggiuntive..

Profondità

Per prima, puoi impostare la profondità, depth, delle istanze dell’oggetto.
Quando le istanza vengono disegnate sullo schermo sono disegnate in ordine di profondità.

Le istanze con la profondità più grande sono disegnate per prime.
Le istanze con la profondità più piccola sono disegnate per ultime.
Quando delle istanze hanno la stessa profondità sono disegnate nell’ordine con cui sono state create.
Se vuoi assicurarti che un oggetto stia sopra altri dagli una profondità molto negativa.
Se vuoi assicurarti che un oggetto stia sotto altri dagli una profondità molto positiva.

Puoi anche cambiare la profondità di un’istanza durante il gioco utilizzando la variabile depth.

Oggetti persistenti

Secondariamente, puoi rendere un oggetto persistente.

Un oggetto persistente continuerà a esistere quando ti sposti da un livello al successivo.
Scomparirà soltanto quando lo distruggerai esplicitamente.
In questo modo hai bisogno di sistemare un’istanza dell’oggetto nel primo livello ed essa rimarrà disponibile in tutti i livelli.
Questo è grande quando hai un personaggio principale che si muove di livello in livello.

L’uso egli oggetti persistenti è un meccanismo potente ma porta anche a commettere facilmente degli errori.

Ereditarietà

Ogni oggetto può avere un oggetto genitore.

Quando un oggetto ha un genitore, eredita il comportamento del genitore.
Detto in modo diverso, l’oggetto è una specie di caso speciale dell’oggetto genitore.

Per esempio, se hai 4 palle diverse, di nome palla1, palla2, palla3, palla4, che hanno tutte lo stesso comportamento ma hanno una sprite diversa, puoi rendere la palla1 genitore delle altre tre.
Adesso hai bisogno di specificare gli eventi per palla1.
Le altre erediteranno gli eventi e il comportamento esattamente allo stesso modo.
Inoltre, quando applichi azioni alle istanze dell’oggetto genitore esse saranno applicate anche ai figli.
Quindi, per esempio, se distruggi tutte le istanze della palla1 anche le istanze di palla2, palla3, palla4 verranno distrutte.
Questo fa risparmiare tanto lavoro.

Spesso gli oggetti dovrebbero comportarsi identicamente ma si presentano alcune piccole differenze.

Per esempio, un mostro dovrebbe muoversi su e giù e l’altro verso sinistra e destra.
Per il resto essi hanno esattamente lo stesso comportamento.
In questo caso quasi tutti gli eventi dovrebbero avere le stesse azioni ma uno o due dovrebbero essere diversi.
Di nuovo possiamo fare che un oggetto sia il genitore dell’altro.
Ma in questo caso definiamo certi eventi per l’oggetto figlio.
Questi eventi sovrascrivono gli eventi del genitore.
Così quando un evento per l’oggetto figlio contiene delle azioni, esse saranno eseguite al posto di quelle dell’evento del genitore.
Se comunque vuoi eseguire l’evento del genitore puoi richiamare il cosiddetto evento ereditato utilizzando l’azione appropriata.

In questi casi è buona pratica creare un oggetto di base.

Questo oggetto di base contiene tutti i comportamenti di default ma non viene mai utilizzato nel gioco.
Tutti gli oggetti hanno questo oggetto di base come genitore.
Gli oggetti genitore possono ancora avere genitori e così via.
Naturalmente non puoi creare cicli.
In questo modo puoi creare una gerarchia di oggetti.
Questo è estremamente utile per rendere il tuo gioco strutturato e sei vivamente incoraggiato a imparare a utilizzare questo meccanismo.

C’è un secondo utilizzo dell’oggetto genitore.
Egli eredita anche i comportamenti delle collisioni da altri oggetti.

Spieghiamolo con un esempio.
Assumi di avere 4 oggetti diversi di tipo pavimento.
Quando una palla colpisce il pavimento deve cambiare direzione.
Questo deve essere specificato nell’evento collisione della palla con il pavimento.
Siccome ci sono 4 tipi diversi di pavimento dobbiamo inserire il codice in 4 diversi eventi collisione della palla.
Ma se crei un oggetto di base per il pavimento e lo rendi genitore dei 4 oggetti effettivi di pavimento, hai bisogno di specificare soltanto l’evento di collisione con questo pavimento di base.
Le altre collisioni eseguiranno lo stesso evento.
Di nuovo, questo ci risparmia tanto lavoro di copia.

Come specificato, ogni volta che usi un oggetto questo coinvolge i discendenti.
Questo avviene quando, in un’azione, indichi che l’azione deve essere applicata alle istanze di un certo oggetto.
Avviene anche quando usi l’istruzione with() nel codice.
E funziona quando chiami funzioni come istanza_position, istanza_number, ecc.
Infine, funziona quando fai riferimento a variabili in altri oggetti.
Nell’esempio precedente quando imposti palla1.speed a 10 questo si applica anche a palla2, palla3 e palla4.

Maschere

Quando due istanze si toccano si verifica un evento di collisione.
Per decidere quando due istanze si sovrappongono si utilizzano le sprite.
Questo funziona in molti casi ma a volte tu vuoi che la collisione si basi su un contorno diverso.
Per esempio, se realizzi un gioco isometrico, gli oggetti hanno tipicamente un’altezza (per dargli un aspetto 3D).
Ma per le collisioni desideri utilizzare la parte terrena della sprite.
Questo si può ottenere creando una sprite separata che si utilizza come maschera di collisione per l’oggetto.

Informazioni

Il pulsante Show Information fornisce una panoramica di tutte le informazioni dell’oggetto che può essere anche stampata.
Questa è particolarmente utile quando perdi il conto di tutte le tue azioni ed eventi.