LuaSTG l’editor grafico per denmakufu!

LuaSTG è un nome generico per una serie di motori di gioco basati su Lua.
Ha lo scopo di fornire un motore per la creazione di giochi Shoot’em map.

LuaSTG si è sviluppata grazie agli sforzi congiunti della comunità della comunità cinese di Touhou, la prima versione è stata fatta nel 2011 da un certo Zhouzi che hanno creato diverse versioni.

Le versioni di LuaSTG

Prima di cominciare bisogna scaricare Lua per computer attraverso questo sito.

Dopo aver installato Lua, bisogna scaricare l’editor di LuaSTG, ma ci sono diverse versioni del programma, e possono cambiare molto tra versioni.

Engine:

VersioniSviluppoSviluppatoreSistema OperativoLibrerie
LuaSTG “Vanilla”2011-2014ZhouziWindowsSDL
LuaSTG Boost2014-2015TóngWindowsSDL
LuaSTG Ex Plus2015-presente⑨chuWindowsFancy2D
LuaSTG-x2018-presenteXrysnowLinuxcocos2d-x
Sono presenti i download

LuaSTG “Vanilla” è la prima versione di LuaSTG, mancano molte cose importanti ed è molto datato, quindi prendilo solo nel caso in cui ne avessi bisogno per giocare a un gioco creato su di esso. Altrimenti, ignoralo, poiché è qui solo per scopi di archiviazione.

LuaSTG Plus è la versione migliorata del vanilla che nel 2014 mirava a migliorare e aggiungere funzionalità al motore. Ma è stato abbandonato lo sviluppo nel 2015.

LuaSTG Boost un motore di ⑨chu nel 2015 basato sull’originale LuaSTG con architettura rimodellata e altre implementazioni. La maggior parte degli altri motori LuaSTG erano basati su questa versione. Non è più in attivo come sviluppo.

LuaSTG-x l’ultima versione LuaSTG disponibile pubblicamente ed è in fase di sviluppo attivo. È stato sviluppato specialmente per Linux e ha molte nuove funzionalità e miglioramenti. Tuttavia, ha ancora bisogno di ulteriori test.

Editor:


Versioni SviluppoSviluppatoreSistema operativoLibrerie
LuaSTG Editor (wxLua)2011-2020ZhouziWindowswxLua
LuaSTG Editor Sharp2018-Presente czh098tomWindows .NET Framework
LuaSTG-x Editor2018-PresenteXrysnowLinuxcocos2d-x
Sono presenti i download

LuaSTG Editor: Creato nel 2011, ma aggiornato per conformarsi alle nuove versioni LuaSTG dai rispettivi manutentori, sulla base della piattaforma wxLua. È deprecato, poiché diventerebbe molto ingombrante e lento in progetti più grandi ed è molto difficile da mantenere. Richiede l’installazione di Lua per Windows.

LuaSTG Editor Sharp: Creato da czh098tom/NightBird nel 2019, per essere un’alternativa all’editor wxLua, aggiungendo un’enorme quantità di funzionalità e miglioramenti estremi delle prestazioni, poiché è basato su C# anziché sulla piattaforma wxLua. I suoi motori di destinazione sono LuaSTGExPlus e LuaSTG-x.

LuaSTG-x Editor: Una versione alternativa dell’editor wxLua che viene fornito in bundle con LuaSTG-x fornito per Linux, ma con nuove funzionalità e miglioramenti delle prestazioni, insieme alle esclusive funzionalità LuaSTG-x.

Ricordiamo che ogni progetto creato su una versione non può funzionare nell’altra. (un po’ come tra dnh 0.12m e ph3)

Nel caso sei un’ottimo programmatore ricordo che LuaSTG è open-source quindi puoi creare fork e aggiungere add-on.

Come funziona l’editor?

Come editor userò LuaSTG Sharp perché aggiunge moltissime feature e miglioramenti estremi delle prestazioni.

L’editor lavora in un campo gestionale e all’interno di questo campo ci saranno dei nodi, dei quali possono essere genitori o figli, un genitore è quando un nodo tipo ne ospita un altro al suo interno,

L’editor lavora in un campo gestionale e all’interno di questo campo ci saranno dei nodi, di cui possono essere genitori o figli, un genitore è quando un nodo importante ne ospita un altro al suo interno, e un figlio è un nodo che è ospitato su un genitore un esempio a questo, ad esempio è un nodo di ripetizione essendo il genitore di un nodo di proiettile semplice sparare, e in questo caso il genitore avrà il compito di ripetere l’azione di sparare il proiettile in un dato intervallo, e il ruolo del figlio è di commettere l’azione.

Esistono molti nodi che possono essere utilizzati ed è possibile creare alcuni nodi scriptando in Lua, ma ne parleremo un’altra volta.

I nodi sono tutti separati tra schede che sono fondamentalmente categorie che raggruppano nodi simili a se stessi. ci sono anche alcune scorciatoie che dovresti usare, come ad esempio ctrl+Z per annullare qualcosa che hai fatto dentro il campo gestionale.

Ogni nodo può avere delle proprietà e puoi modificare le proprietà nell’elenco dei parametri nella parte sinistra dello schermo, ad esempio in questo nodo “Create Boss” ci sono 2 parametri.

Per procedere, puoi aggiungere tutti questi nodi usando le funzioni di inserimento come “inserisci dopo”, “prima”, “come figlio” o “come genitore” devi solo selezionare e creare il nodo.

Ricorda che alcuni nodi richiedono la creazione di un genitore specifico, quindi non tutti i nodi possono essere utilizzati in qualsiasi luogo, è una regola importante della prgrammazione a nodi.

Sistemazione

Per iniziare con lo svilluppo(dopo aver scaricato Lua) e dopo aver LuaSTG stesso, devi mettere in una cartella le cartelle “editor/game/tools” che saranno all’interno dell’archivio LuaSTG e crea una cartella chiamata “progetti” dove andrai a mettere i salvataggi sul gioco e file collegati al progetto.

Dopo aver fatto ciò, apri lo Sharp Editor, la prima cosa da fare è di andare su Settings e poi Compiler e clicca sui LuaSTG Executable Path e seleziona LuaSTGPlus.dev.exe e clicca OK, riavvia l’editor e torna su Settings e General, su Plugin devi mettere LuaSTGPlusLib.dll e poi riavvia l’editor.

Nota bene se ci sono messaggi d’errore se non ci sono vuol dire che è tutto apposto.

Come creare un nuovo progetto

Vai su File e New File e al momento ti apparirà questa schermata:

Troverai sulla destra una descrizione su ciò che è ogni icona, ma al momento proviamo a fare una Spell Card.

Troveremo un campo gestionale con nodi default e possiamo già provare il progetto, ma prima dovete salvare il file e ogni volta che modificate il progetto per vedere i cambiamenti dovete ricordarvi di salvarlo ogni volta.

Per provare il progetto dovete cliccare questo:

Se il gioco grasha dovete abbassare la risoluzione andando su Settings, Debug e selezionare una risoluzione bassa:

Come potete vedere apparirà una una palla di luce e in modo impeccabile senza problemi, questo perchè a differenza di altre alternative come Denmakufu o Godot, tutto funziona con asset preinstallati e funzionanti, ciò ci permetterà di creare facilmente stage e boss dato che esiste un sistema di Default.

Per capire meglio come è composto lo stage andiamo a vedere su “define boss”.

Vedremo 2 colonne proprietà e Parametri, ma noi possiamo cambare i parametri.

In Name: possiamo cambiare il nome del boss (ad esempio se lo vuoi chiamare Cicciolino)
In Difficulty: la Difficoltà in cui possiamo far apparire il boss o se vogliamo mettere una musica diversa in altre difficoltà, in questo caso è su “All” per indicare tutte le difficoltà che verranno messe.
In Displayed name: Possiamo mettere il nome che apparirà in alto a sinistra della schermata.
In Background: Possiamo mettere il Background(lo sfondo della battaglia) Che ci sarà quando il boss farà una spellcard.
In Background music: La stessa cosa ma applicata con audio musicali.

Di default quest’ultime saranno la foresta di Bamboo e il tema delle spell card di Touhou 8.

Nel mio caso ho cambiato name a Horus e Displayed name a Horus l’eretico.

Su On Init() (su inizio) troviamo la posizione iniziale della spellcard sulla mappa.

Dobbiamo ricordare che il nodo non è esclusivo a Define boss ma è piuttosto presente in una multitudine di altri grandi nodi e la sua funzione è di determinare argomenti da dare ai nodi quando vengono creati.
Queste istruzioni hanno altri parenti:

Come on frame(su frame), on kill (Su uccisione), on del(su cancellazione), on colli(su collisione), on start(su partenza), on finish(su fine) hanno usi diversi a seconda del nodo a cui appartengono.

Tornando a On Init, ha la funzione di determinare la posizione del boss quando è creato, e qual’è la spellcard in background.

Poi abbiamo il nodo della spellcard:

Questo nodo è parecchio importante, quindi sta attento.
Nella lista dei parametri abbiamo:

Name è il nome della spellcard
Protect time è per quanti secondi il boss sarà invincibile dopo che è apparso.
DMG reduce time è per quanto tempo il boss gradualmente riceve più danni in tutto il tempo della spellcard.
Total time è la durata totale della spellcard
Hit point è la vita totale della spellcard
Drop power è la quantità di punti potere rilasciati
Drop faith è la quantità di punti fede rilasciati
Drop point è il punteggio rilasciato
Immune to bomb è per rendere il boss immune ai danni da bomba
Performing action è per far azionare un’azione comandata che precede l’apparizione della barra HP, ciò è utile in modalità pratica ma oer il resto non servirà a niente. (evita di toccare al momento)
Optional ID è un parametro generico per mettere codici in Lua, può essere utilizzato per fare ad esempio multiboss. (evita di toccare al momento)

Se vuoi crere una non-spell, basta che cancelli il nome ed il gioco è fatto.

Passiamo alla parte più interessante , proviamo a dare più look al boss, scaricatevi i seguenti file:

clicchiamo su on init() e poi su Set walk image con Insert as Child e notiamo altri parametri importanti.

Ma prima consigli di scaricarvi queste cose.

Possiamo basarci anche su questa Marisa originale in caso di nostre altre creazioni.

Image path è la localizzazione del file(png) che vogliamo usare.

Cols and rows è la quantità di colonne e righe (verticali e orizzontali) in questo caso 4(colonne), 3 (righe)
Number of images è il numero di immagini per ogni riga (in questo caso 4,4,3)
Number of repetend è la moltiplicazione del numero di ripetizioni dell’immagine
Animation Interval è quanto veloce devono essere i frame (più è basso più è veloce)
Collision size è la quantità di pixel dal centro dell’immagine che fanno da hitbox al boss (cerchio o ovale)

Se all’arrivo del nemico ti spunta un errore e ti si chiude il programma.
DObbiamo ricordarci che siccome abbiamo cambiato nome al boss, dobbiamo espandere il nodo Stage “SpellCard” e cambiare il nome col nome del boss che avete messo.

Perfetto! ora funziona a dovere!

Ora proviamo a fare qualche proiettile.

Andiamo sul Create Task della Spellcard e mettiamo insert after dopo il move to (altrimenti non funziona) selezionamo Create Simple bullets e ci ritroviamo altri parametri.

In Style vediamo i proiettili preinstallati che abbiamo(si possono sempre metterne altri)
In Color possiamo selezionare il colore del proiettile.
Position è la posizione da dove devono cominciare i proiettili, in questo caso self.x e self.y sono valori che si riferiscono alla stessa posizione del nemico.

Number è la quantità di “serie” di proiettili sparati.
Interval è l’intervallo tra una serie e l’altra
Velocity begin è la velocità dal primo poiettile sparato
Velocity end è la velocità fino all’ultimo proettile sparato (metti lo stesso lavore se vuoi che tutti i proiettili abbiamo la stessa velocità).
Angle è l’algolo dei proiettili sparati

In LuaSTG l’angolo 0 è puntato direttamente sulla destra e quindi l’angolo 0 punterà direttamente al centro.

Angle Spread è praticamente il raggio del proiettile se p a 360 colpirà da qualsiasi parte per formare un cerchio se è 0 sparerà una singola linea.
Aim to player determina se i proiettili saranno mirati al giocare o meno.
Rotation velocity è la velocità di rotazione dei proiettili (questo è utile se fate tipo degli shuriken come proiettili)
Destroyable è per rendere distruttibili o meno i proiettili con una bomba.
Time è il numero di frame in cui il proiettili deve iniziare a a muoversi.
Rebound è per rendere “rinbalzanti” i proiettili.

Introduciamo anche una cosa interessante di Lua overo gli RNG (RANDOM NUMBER GENERATOR)
Ad esempio se scrivi Ran:int(1,5) selezionerà un numeron da 1 a 5
PoI c’è Ran:Float che ci permetterà di mettere decimali (ad esempio da 1.2 a 6.9)

Per provarlo ho fatto questo semplice comando(state attenti alle maiuscole):

Tuttavia se lo proviamo ora saranno sparati una sola volta e basta, quindi ci serve un’altro nodo.

Per far si che spari all’infinito dobbiamo mettere “_infinite”

Ha funzionato!

Ora facciamo qualcosa di interessante, vi ricordate quelle immagini di prima? ecco spero che avete messo quelle immaggini nella cartella images

Clicchiamo foler e rinominiamo la cartella. subito dopo clicchiamo su Graphics e Load images.

E clicchiamo su quelle immagini di prima, e le carichiamo.

Poi andiamo su Define Boss Background e Define boss layer inquesto modo:

e poi ci ritroviamo questi parametri:

Image è la directory dell’imagine
Is tile è un parametro che può essere positivo o negativo, se messo positivo farà “girare” l’aiimagine che se fosse in un loop
loop è la posizione dell’immagine quando è 0,0 è centrale nello schermo
Rotation è l’orientazione iniziale dell’immagine
Velocity(x,y) è la velocità di movimento dell’immagine, in questo caso l’immagine si muove in loop verticalmente
Omiga è il senso di rotazione dell’immagine se il valore è positivo l’immagine andrà in senso orario se negativo antiorario.
Blend mode è per dare effette all’immagine come sfocatura ecc.
Scale è per ingrandire o rimpicciolire l’immagine

Come possiamo notare il Define Layer da altri 3 nodi

on init fa iniziamo un’ azione appena è creata
on frame fa un’azione ogni frame
on render fa un’azione appena è renderizzata su Schermo

ricordiamoci di selezionare su On Init il nome della spellcard.

Ed voilà! il background parte!

Ora che abbiamo completato lo sfondo del boss, possiamo provare a creare altre spellcard. prima di tutto, inizierò trasformando la spellcard che abbiamo creato in una non-spellcard. nel caso in cui non ricordi come creare un non-spellcard, cancella semplicemente il nome e il gioco lo tratterà come un non-spellcard. ho anche sbloccato gli scatti. non possiamo dimenticare di aggiungere anche un po’ di suono.

Per fare una cosa del genere andiamo nel nodo repeat e aggiungiamo “Play sound effect”

Proprio in questo modo, qui notiamo dei parametri come:


Nome
: Nome della traccia audio da mettere(li potrete mettere altri in .wav nella cartella se in Editor)
Volume: la potenza del volume.
Pan: la forza del volume a seconda della vicinanza all’origine.
ignore default value: Ignora o no i valori imposti dal sistema.

Comunque è possibile creare più spellcard, per creare altre spellcard basta sempliemetne selezionare “Define Spell Card” e posizionalo dopo quello che è già all’interno del boss definito


in questa nuova Spellcard, invece di usare un altro nodo di creazione di proiettili semplici, creerò invece un proiettile definito. a cui possono essere assegnate operazioni specifiche e più argomenti rispetto a un semplice nodo proiettili.
Intanto creo un’altra cartella all’interno di risorse e la chiamerò “Bullets and Lasers”

Parameter List: è un contenitore per mettere parametri per far fare cose ai proiettili in determinate condizioni.
Style: Selezioni come dev’essere la forma del proiettile
Color: Selezioni il colore che vuoi del proiettile
Stay on create: Se il proiettile deve sempre generarsi o meno.
Destroyable: Se il proiettile può essere distrutto o meno.

Possiamo mettere un compito importante per il proietteile, ovvero il velocity per farl9o, dobbiamo andare su Set Velocity.

La dobbiamo mettere come “as a child” sotto l’on init e tra i parametri interessanti abbiamo:

Target: Che è dov’è situato il proiettile
Velocity: Che è la velcità dei proiettile
Angle:
Che è l’angolazione del proiettile
Aim to Player:
Se il proiettile deve mirare al giocatore o meno (se lo fai devi mettere l’angolazione a 0)
Set Rotation:
se il proiettile deve seguire la rotazione del proiettile

Come avete potuto notare anziché usare dei numero ho usato delle variabili, le variabili contengono elementi come numeri stringhe o parole, in questo caso ciò che intendo dire mettendoli è che non definiremo la velocità e l’angolo direttamente qui nei proiettili, ma piuttosto solo quando creeremo questo proiettile, in quel caso vai su “on init ()” di questo punto elenco e inserire “velocity, angle” nell’elenco dei parametri. ora quando lo creiamo, chiederà di riempirli.


Cliccando sui parametri vedremo un riquadro con i parametri disponibili, che sono quelli che abbiamo usato quando abbiamo definito il proiettile, in questo caso ho impostato la velocità a 3, e l’angolo a -90, che farà andare il proiettile verso il basso , alla velocità di 3.

Adeso hai visto le potenzialità dei proiettili?

Adesso proviamo a fare dei laser

Puoi usare qualsiasi nodo, ovviamente, entro i limiti, all’interno di quel proiettile, e fargli fare ogni sorta di cose come generare sempre più proiettili al suo interno! Ma anche, proviamo a fare i laser!
I laser sono altrettanto semplici come i proiettili, quindi te lo mostrerò molto velocemente, dal momento che il limite di tempo del mio video si sta avvicinando.

Posiziona un nodo “define laser”, che si trova nel tag laser, dopo il proiettile definito che abbiamo appena creato.
ha il solito nome e parametri di difficoltà come sempre.
Sul suo nodo “on init()”, possiamo vedere alcuni parametri qui.

Parameter List: è un contenitore per mettere parametri per far fare cose ai proiettili in determinate condizioni.
Color: Selezioni il colore che vuoi del laser
Style: Selezioni lo stile che vuoi del laser
Head Length: imposti la lunghezza della testa del laser
Body Length: imposti la lunghezza del corpo del laser
Tail Lenght: imposti la lunghezza della coda del laser
Width: imposti la larghezza del laser
Node size: Consente di modificare la scala di un’unità
Head size: Consente di modificare la scala della testa del laser

Una volta creato il proiettile possiamo accorgerci di aver creato anche un’altro nodo:

Al suo interno, abbiamo l’obiettivo, che è il laser stesso, che è la quantità di fotogrammi che impiegherà il laser a strapparsi, riprodurre l’effetto sonoro, che chiede se deve riprodurre l’effetto sonoro laser, e attendere in questo compito, quindi che si decide se il laser attenderà il completamento dell’accensione prima di procedere ai nodi successivi.
personalmente ho impostato l’ultimo parametro su false

Possiamo comunque usare il velocity node come abbiamo fatto per prima

Come potete vedere funziona e mi ha pure preso!

Esistono anche i laser curvi.

Il procedimento è uguale a prima, ma in questo caso dobbiamo dare l’accelerazione

Ho fatto mirare al giocatore, in modo che possiamo vedere più della piegatura del laser curvo l’ho messo all’interno di un nodo di ripetizione in modo che il laser miri sempre alla posizione attuale del giocatore.

Ed ecco qui! funziona perfettamente!


Comunque dopo aver settato i proiettili e tuttto abbiamo un’altra parte importante per un gioco ovvero gli stage, per vedere lo stage dobbiamo vedere nello specifico nodo.


Questo nodo controlla principalmente il livello stesso, ma il suo nome è importante, poiché il nome che inserisci qui è il nome della difficoltà selezionata.

Quindi, se cambi il modulo del nome “Spellcard” in, ad esempio, “normale” nell’angolo in alto a destra della schermata di gioco, verrà visualizzata la modalità normale.
Gli altri parametri importanti sono:
Start life, che è la quantità di vite che ottieni quando inizi in questa difficoltà.
Start power che è la quantità di potere che hai quando avvii lo stage, così come Start Faith e Start bomb
Consentire la pratica è un controllo vero o falso per sapere se si desidera che questa difficoltà sia praticabile.
per esempio, gli stadi extra dovrebbero essere verificati per essere falsi.
il valore di difficoltà è solo un parametro per definire qual è il valore di difficoltà interno di questo nodo di fase.
1 è la modalità facile, 2 è la modalità normale, 3 la modalità difficile, 4 la modalità lunatic e 5 la modalità extra.
Nel gruppo di stage, i parametri sono la stessa cosa.Tuttavia, se vuoi avere una progressione di fase dovresti cambiare il nome

del nodo dello stage a qualsiasi numero sia lo stage che vuoi che sia. Ad esempio, se vuoi che sia la fase 1, cambia il nome di quel nodo in solo “1”.


Il code node che ha al suo interno la funzione Load Music, si occupa di caricare per noi la musica che suona sul palco.
Una musica deve essere caricata prima di riprodurla, quindi tienilo a mente.

C’è anche un’alternativa per questo nodo, che è il carico, nodo musicale di sfondo. Ha i seguenti parametri.
Path: che è dove si trova la musica
Resource name: quale è il nome interno della canzone
Loop end: che è quando termina il ciclo della canzone.
Loop length: che è per quanto tempo il ciclo è lungo.

Queste misure di rimorchio sono in pochi secondi, ma è possibile utilizzare i decimali per essere più precisi.

Quindi abbiamo il nodo dello sfondo dello stage. Qui puoi selezionare uno sfondo che desideri per il palco.


Ci sono molti sfondi predefiniti o preimpostati come mostrato sullo schermo, quindi prendi quello che trovi più adatto e vediamo il nodo successivo.

Play background music, riproduce solo una canzone che hai caricato in precedenza.
gli argomenti sono name, che è il nome della musica interna, time, che è se vuoi iniziare un punto specifico, e set stage time, che serve per impostare il tempo dello stage.

Ora che sappiamo come funzionano le fasi e che seguono un percorso semplice, possiamo iniziare a farci un semplice nemico.
Ma prima di cosa, aggiungiamo un nodo di attesa prima che venga creato il boss, solo così possiamo vedere cosa stiamo facendo con i nemici.

Vai alla scheda nemico e seleziona “Create simple enemy“.


Gli argomenti che troviamo soni:
Style: Che è la grafica del nemicoche puoi scegliere
Hit point: Che è la vita del nemico
Position: Che è la posizone in cui apparirà il nemico
Drop power: quanto potere dropperà
Drop faith: quanta fede dropperà
Drop point quanti punti dropperà
Protect (in frames): Che è per quanto tempo sarà invulnerabile
Clear bullets: ovvero se vuoi che tutti i proiettili sullo schermo vengano eliminati una volta che il nemico muore
Offscreen removal: che dice al gioco di uccidere il nemico una volta che si è allontanato troppo dai limiti.
Contract damage: che è quello di abilitare o disabilitare la sua casella di collisione


Per un test, ho creato una fata leggermente fuori dai limiti in modo che entri al centro dello schermo e poi spara un proiettile come esempio


Come possiamo vedere funziona correttamente

Possiamo in alternativa creare così i nemici.
Per proseguire con gli stage basta seguire questi nodi:

Credo che capirete da soli, che è autoesplicativo.

Adesso andremo in un’altra parte importante, e inizieremo a parlare di oggetti in LuaSTG.

La maggior parte di ciò su cui lavora LuaSTG riguarda gli oggetti. I boss, i giocatori sono oggetti, i proiettili, i colpi dei giocatori e molte altre cose sono oggetti.
Naturalmente, questi possono avere le proprie peculiarità e comportamenti esclusivi, ma senza gli oggetti LuaSTG non sarebbe nulla.
Per fortuna, non dobbiamo iniziare a creare oggetti complessi come quelli che ho menzionato. Bene, tecnicamente abbiamo creato oggetti in passato, poiché i proiettili definiti ad esempio sono fondamentalmente oggetti glorificati. Più intrinsecamente dicendo, una classe di oggetti. Ma per ora, non è molto importante che tu lo sappia, quindi ti insegnerò in un modo simile a come ho fatto in precedenza poiché l’editor non può diventare così complesso prima di diventare un po’ disordinato.
Bene, ora possiamo iniziare a creare il nostro primo oggetto. Per motivi organizzativi, come sempre, consiglio di creare un’altra cartella denominata “Objects”

Ad esempio, i primi oggetti che creeremo è una scheda del titolo dello stage. Queste sono le informazioni sullo stage che compaiono ogni volta che lo stage inizia nei giochi touhou, di solito.

Nella scheda oggetti, troverai il nodo di “define objects”, che funziona in modo molto simile a come funzionano gli altri nodi di “definizione” che abbiamo usato in passato

I parametri sono solo 2 cioè il nome dell’oggetto e la difficolta a cui appartiene.
Ma la parte importante st6a su on init()

Lì abbiamo un sacco di proprietà interessanti che possiamo cambiare, ho intenzione di sorvolare un po’ su questo dato che è abbastanza grande da spiegare.
Dico solo che molti di questi parametri sono autoesplicativi.
Ma ci sono quelli importanti come Layer e Group agiscono rispettosamente in modi specifici a seconda di quale strato sono gli oggetti. ad esempio, se un oggetto si trova nel livello e nel gruppo dei proiettili nemici, agirà come se fosse un proiettile e il giocatore morirà se lo tocca, purché sia impostata una hitbox.
Hide determinerà se l’oggetto deve essere invisibile e vincolato decide se l’oggetto verrà eliminato se esce dallo schermo.
Collegherò insieme l’immagine che userò per il titolo dello stage e ne faremo la dissolvenza e il movimento. farlo funzionare

Ora che hai l’immagine, caricala nella cartella delle immagini e definito l’oggetto.
con queste caratteristiche, nel livello top e nel gruppo ghost, possiamo iniziare a codificarne il comportamento.
Prima di tutto, dobbiamo trovare una buona posizione verticale per l’immagine.
Puoi iniziare a provare ciò che trovi meglio creando l’oggetto nello stage e modificando la posizione y per trovare un’altezza che ti piace. personalmente penso che l’altezza di 100 mi soddisfi molto.

Bene, ora che hai scelto l’altezza che vuoi che sia, facciamolo scorrere da destra a sinistra e fallo sfumare. Per questo, avremo bisogno di un’attività all’interno dell’oggetto per eseguire una mossa da comandare . Ma prima di ciò, gestiamo l’oggetto in dissolvenza:

Come puoi vedere nell’immagine, prima ho usato un nodo di colore oggetto impostato al di fuori dell’attività è , se lo inseriamo all’interno dell’attività, ovvero se lo inseriamo all’interno dell’attività saremo in grado di vedere l’oggetto per il singolo fotogramma prima che scompaia. Questo perché l’attività esegue solo un frame dopo la creazione dell’oggetto. Ora che lo sai, quello che ho cambiato nel nodo del colore impostato è rendere il suo alfa a 0.

Ricordatevi di mettere il Create Object



Quindi, creiamo un tasker all’interno dell’attività, che eseguirà il nostro processo di dissolvenza, senza interrompere il processo di movimento, come puoi vedere nell’immagine. Qui, ho creato un nodo di ripetizione che esegue un ciclo 30 volte e aumenta una variabile che corrisponde al valore alfa che stiamo alzando nell’oggetto (assicurati di aspettare o l’immagine passerà istantaneamente da 0 alfa a 255 anziché dissolversi in ) vediamo se funziona!

Come possiamo vedere funziona tranquillamente!

Come puoi vedere, è sbiadito con successo. Ora, che ne dici di farlo muovere? prima, nella posizione di spawn dell’oggetto a , per esempio, (100,100) Questo farà sì che l’oggetto si spenga a destra. Quindi posiziona un nodo “sposta” dopo il tasker che abbiamo creato che fa andare l’oggetto su (0, 100) Questo farà spostare l’oggetto a sinistra fino a raggiungere il centro dello schermo.
Possiamo farlo muovere senza problemi in 60 frame con la modalità di interpolazione MOVEL_DECAL.

Ora, facciamo in modo che attenda 60 fotogrammi e poi si allontani e si sbiadisca. Allo stesso modo in cui abbiamo usato un tasker per far spostare l’oggetto al centro e dissolversi contemporaneamente, useremo un altro tasker per farlo muovere a sinistra mentre si dissolve. puoi riutilizzare la formula alfa precedente, solo invertita in modo che l’alfa aumenti in altezza e poi diminuisca. Personalmente l’ho fatto impiegare un po’ più di tempo per svanire, inoltre, non dimenticare il tuo wat. dopo il tuo tasker, crea un altro nodo “sposta in” che farà spostare l’oggetto su (-100,100). Cioè, ancora più a sinistra. questa volta userò la modalità di interpolazione MOVE_ACCEL. Dopo che l’oggetto è completamente sbiadito e diventa invisibile, lo elimineremo.

Abbiamo completato il nostro primo oggetto. questa è solo un’applicazione dell’oggetto in LuaSTG. Come puoi vedere, possono avere molta varietà e opzioni, quindi ti consiglio vivamente di dare un’occhiata a quelle pagine a cui ti ho collegato, ovviamente, sono molto difficili da padroneggiare ma faranno miracoli se sai cosa stai stai facendo.

Ringrazio Ryan1908 per i suoi video e per avermi fatto conoscere il programma.

/ 5
Grazie per aver votato!
mycus
Author: mycus