Buio ambientale + lanterna pg

Scripts e snippets scritti in GameMaker Language (gml)
Rispondi
BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Buio ambientale + lanterna pg

Messaggio da BotaniciTraffici »

PREMESSA
Ciao a tutti, voglio condividere questo semplice codice per chi è alle prime armi con GM e vorrebbe realizzare l'effetto di una lanterna che segue il giocatore nella notte.

Il codice non ha nulla di speciale, ma può tornare utile per chi volesse imparare una cosina in più... che non fa mai male.

REQUITISI
Avete il vostro giocatore che si muove nel mondo e una view che lo segue. Il vostro pg illumina intorno a lui come se avesse una lanterna. Ovviamente sto parlando di 2d. Questo semplice e veloce sistema va bene sia per giochi side che topview, anche isometrici.

FASE 1: LUCE AMBIENTALE
Per prima cosa crea un'oggetto e chiamalo obj_luce_ambientale Questo oggetto va inserito nella room e serve a mostrare l'effetto notte. In poche parole scurisce tutto quello che c'è nella view.

Nel create dell'oggetto crei una surface delle dimensioni della view:

Codice: Seleziona tutto

luce=surface_create(view_wview,view_hview);
Nello step disegna un rettangolo che copre la view

Codice: Seleziona tutto

surface_set_target(luce);
draw_set_color(c_ltgray);
draw_rectangle(0,0,view_wview,view_hview,false);
surface_reset_target();
Nel draw disegna la surface

Codice: Seleziona tutto

draw_set_blend_mode(bm_subtract);
draw_surface(luce,view_xview,view_yview);
draw_set_blend_mode(bm_normal);
FASE 2: LA LANTERNA
Se hai già un'oggetto lanterna che segue il tuo giocatore applica il codice seguente, altrimenti crea un oggetto nuovo e fai in modo che lo segua

Nell'end step disegna "la luce" della lanterna. La variabile grandezza puoi modificarla a piacere a seconda delle tue necessità.
Quello che fai è disegnare un cerchio attorno al pg (o alla lanterna, se ne hai una). I 4 punti del cerchio li calcoli in automatico in base alla grandezza che hai inserito. La luce viene anche posizionata in relazione alla view. (esamina il draw_ellipse_color per capire come funziona)

Codice: Seleziona tutto

grandezza=200;
draw_set_blend_mode(bm_subtract);
surface_set_target(obj_luce_ambientale.luce);
draw_ellipse_color(x-grandezza/2-view_xview,y-grandezza/2-view_yview,x+grandezza/2-view_xview,y+grandezza/2-view_yview,c_white,c_black,false);
surface_reset_target();
draw_set_blend_mode(bm_normal);
CONCLUSIONE
E' possibile incollare l'ultimo codice che ho scritto nell'end_step di qualsiasi oggetto volete che faccia una luce radiale.
Questo è un modo molto semplice e veloce per risolvere uno dei problemi più comuni ai makers, ma è solo un punto di partenza per chi vuole capire il funzionamento delle surface e del blending.
Ultima modifica di BotaniciTraffici il 24/02/2014, 18:49, modificato 1 volta in totale.

Avatar utente
Cash
Membro super
Messaggi: 933
Iscritto il: 09/11/2013, 20:40
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da Cash »

Devo imparare ad usare le surfaces,comunque hai fatto un piccolo errore:in questo codice

Codice: Seleziona tutto

draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
draw_set_blend_mode(bm_normal);
hai confuso la variabile light con quella luce,il codice giusto dovrebbe essere

Codice: Seleziona tutto

draw_set_blend_mode(bm_subtract);
draw_surface(luce,view_xview,view_yview);
draw_set_blend_mode(bm_normal);

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da BotaniciTraffici »

Grazie ;-) E' che io uso sempre nomi in inglese quando uso GM mentre qui ho voluto metterlo in italiano per una maggior comprensione di tutti. Aggiusto subito. :sisisi:

Avatar utente
legogo
Membro attivo
Messaggi: 346
Iscritto il: 03/02/2014, 16:57
Specialità: fastidioso
Uso: GM:Studio 1.4 Free
Località: Cuneo(CN)
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da legogo »

Mi hai salvato BT evviva! Ora ho risolto un problema per il mio gioco

Avatar utente
scritti9212
Membro super
Messaggi: 673
Iscritto il: 02/03/2014, 18:43
Uso: GM:Studio 1.4 Master
Località: casa.exe
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da scritti9212 »

Grazie, oltre ad avermi fatto imparare qualcosa di nuovo, questo codice (leggermente modificato) può essermi utile in un mio gioco, vuoi che ti metta nei credits?
GIOCHI COMPLETI:
A Pixel! (ANDROID)

in progress:
1)Perfect OS (PC)
2)EasyLatin

Avatar utente
scritti9212
Membro super
Messaggi: 673
Iscritto il: 02/03/2014, 18:43
Uso: GM:Studio 1.4 Master
Località: casa.exe
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da scritti9212 »

Ho un piccolo problema: ho usato questo codice modificando solo il colore, e le dimensioni (tramite l'uso di una variabile e di una time line ho fatto in modo che si ingrandisse e rimpicciolisse leggermente, per dare l'effetto l'anterna) ma il buio rimane sempre in secondo piano, quindi chiaramente l'effetto non funziona! Ho provato a modificare anche le depth ma neanche così ho risolto...che devo fare?
GIOCHI COMPLETI:
A Pixel! (ANDROID)

in progress:
1)Perfect OS (PC)
2)EasyLatin

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da pacmino »

a me viene così, la depth l'ho messa a -50 per l'oggetto obj_luce_ambientale

Immagine
Immagine

Avatar utente
scritti9212
Membro super
Messaggi: 673
Iscritto il: 02/03/2014, 18:43
Uso: GM:Studio 1.4 Master
Località: casa.exe
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da scritti9212 »

Ho notato che non centra il depth, è il viola che non viene "nascosto"
GIOCHI COMPLETI:
A Pixel! (ANDROID)

in progress:
1)Perfect OS (PC)
2)EasyLatin

Avatar utente
Cash
Membro super
Messaggi: 933
Iscritto il: 09/11/2013, 20:40
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da Cash »

scritti9212 ha scritto:Ho un piccolo problema: ho usato questo codice modificando solo il colore, e le dimensioni (tramite l'uso di una variabile e di una time line ho fatto in modo che si ingrandisse e rimpicciolisse leggermente, per dare l'effetto l'anterna) ma il buio rimane sempre in secondo piano, quindi chiaramente l'effetto non funziona! Ho provato a modificare anche le depth ma neanche così ho risolto...che devo fare?
Hai modificato il colore di cosa?Della lanterna o del buio?Perchè non puoi modificare quello della lanterna,devi farti un altro sistema

Avatar utente
scritti9212
Membro super
Messaggi: 673
Iscritto il: 02/03/2014, 18:43
Uso: GM:Studio 1.4 Master
Località: casa.exe
Contatta:

Re: Buio ambientale + lanterna pg

Messaggio da scritti9212 »

Ho modificato il colore dello sfondo e ho messo giallo, poi al posto di del grigio chiaro ho messo "yellow" e gli oggetti sono tutti neri così ora viene l'effetto che volevo: l'alone attorno al personaggio giallo che si interrompe quando c'è un muro
GIOCHI COMPLETI:
A Pixel! (ANDROID)

in progress:
1)Perfect OS (PC)
2)EasyLatin

Rispondi

Chi c’è in linea

Visitano il forum: Google [Bot] e 3 ospiti