pioggia

Qui si parla di sprites, backgrounds, effetti speciali, programmi di disegno, ecc.
Rispondi
Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

pioggia

Messaggio da doom13 »

Sono nuovo su questo forum quindi se faccio qualcosa di sbagliato fatemelo notare (intanto leggo le regole :manual: ).
Ho creato un gioco, ovviamente in 2D :D e la visuale che ho scelto è quella dall'alto, quello che vorrei fare è aggiungere appunto la pioggia. La domanda è: come posso fare? :roll:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: pioggia

Messaggio da gameplay_extreme »

se è un gioco laterale o fai uno sfondo scorrevole o usi gli effetti particellari, ma in gioco con visuale dall'alto non saprei
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: pioggia

Messaggio da enick »

un metodo banale sarebbe quello di creare tante instanze pioggia che compiono il percorso (bordo della view --> centro della view), il risultato non è molto realistico, se vuoi piu realismo devi utilizzare i calcoli del fake 3d.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Daviex
Membro
Messaggi: 157
Iscritto il: 11/05/2011, 21:07
Specialità: Programmazione
Contatta:

Re: pioggia

Messaggio da Daviex »

Oppure puoi fare tipo 5 immagini con puntini e dico puntini sparsi per la mappa colorati di blu azzurrino e metti uno sfondo blu scuro con opacità al 20-50% per dargli un aspetto scuro, e li metti ad animazione.
Immagine

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: pioggia

Messaggio da spriters2000 »

Dipende se il gioco è con visuale dall'alto ma un po' laterale o se totalmente dall'alto.
Per il primo puoi usare un sistema simile alla visuale laterale, per il secondo un effetto simil 3d con gocce che si spostano verso il centro (possibilmente ruotando le gocce verso il centro in base alla posizione

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: pioggia

Messaggio da doom13 »

La visuale è perfettamente dall'alto (ah, specifico che ho game maker 8.0 pro), anche io stavo pensando ad un finto 3D con dei puntini che si spostano leggermente verso il centro. Per il momento io sono riuscito solo a modificare lo script per i fuochi artificiali e adesso ho come risultato dei puntini che appaiono random e durano un tot ma è a dir poco orribile... Quindi stavo pensando, non posso sfruttare il 3D solo per realizzare la pioggia e lasciare invariato tutto il resto?
Intanto grazie per le risposte. :D

Un ultima cosa, rispondendo all'utente enick che intendi per calcoli del fake 3D?

EDIT:
Rigiocando il mio gioco :rockrock: mi sono accorto che effettivamente la visuale non è perfettamente dall'alto, ecco uno screenshot che facciamo prima:
Immagine

Lasciate perdere la statua che sembra caduta, l'importante è il personaggio principale :!:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: pioggia

Messaggio da enick »

cerca esempi di fake 3d su yoyogames e anche su questo forum, sono dei calcoli trigonometrici che restituiscono le ipotetiche coordinate 3d di un elemento senza l'attivazione del 3d di gm.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: pioggia

Messaggio da doom13 »

enick ha scritto:cerca esempi di fake 3d su yoyogames e anche su questo forum, sono dei calcoli trigonometrici che restituiscono le ipotetiche coordinate 3d di un elemento senza l'attivazione del 3d di gm.

Ho cercato su internet questo fake 3D e ho scaricato un esempio in .gmk, ho modificato lo script usato nell'esempio per le mie esigenze e il risultato è stato proprio quello che volevo io. Ora sono con il cellulare, appena entro con il pc vi posto uno screenshot e spiego come ho fatto se può interessare a qualcuno...

EDIT:

Immagine

Tralasciando il fatto che ci sono solo un paio di goccioline l'effetto non è male.
l'oggetto l'ho chiamato obj_rain, nell'evento draw ho messo questo script:

var draw_x, draw_y, zheight, height_x, height_y, xwidth, ywidth, closer, dir;
// This is the rotation for wall
dir = 45

// === Theese are the variables indicating the size of this object ===
xwidth = 1
ywidth = 1
zheight = 64
texture = tex_rain3
// ===================================================================
// WARNING: DO NOT TOUCH ANYTHING BELOW! (-Only the texture-names in 'sprite_get_texture', and the blending color in 'draw_set_color', etc)
// NOTE: The depth of this object will be diffrent in every draw-event! And it will NEVER be negative!
height_x = view_wview[view_current]/zheight
height_y = view_hview[view_current]/zheight
draw_x = x+round(lengthdir_x(point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/height_x,point_direction(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)))
draw_y = y+round(lengthdir_y(point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/height_y,point_direction(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)))
closer = zheight/16
// Set the depth (fixing the "overlaps")
depth = point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/100

// 1. DRAW TEXTURES ON THE WALLS
draw_set_color(c_white)

// The Flat Wall
draw_primitive_begin_texture(pr_trianglelist,sprite_get_texture(texture,30))

draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir+180),draw_y+lengthdir_y((ywidth/2)+closer,dir+180),0,0)
draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir),draw_y+lengthdir_y((ywidth/2)+closer,dir),1,0)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir+180),y+lengthdir_y((ywidth/2),dir+180),0,1)

draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir),draw_y+lengthdir_y((ywidth/2)+closer,dir),1,0)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir),y+lengthdir_y((ywidth/2),dir),1,1)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir+180),y+lengthdir_y((ywidth/2),dir+180),0,1)

draw_primitive_end()


Così come è adesso, io metto nella stanza l'oggetto obj_rain e mi disegna una goccia, come posso fare per farne spawnare parecchie random in una zona precisa?
Io ho fatto così:

//Per modificare la zona della pioggia
x1 = 32
x2 = 672
y1 = 1024
y2 = 1312

//--------------------------------------------------------------------
instance_create(random_range(x1,x2),random_range(y1,y2),obj_rain)


come faccio a farlo ripetere? :?:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: pioggia

Messaggio da spriters2000 »

doom13 ha scritto:
enick ha scritto:cerca esempi di fake 3d su yoyogames e anche su questo forum, sono dei calcoli trigonometrici che restituiscono le ipotetiche coordinate 3d di un elemento senza l'attivazione del 3d di gm.

Ho cercato su internet questo fake 3D e ho scaricato un esempio in .gmk, ho modificato lo script usato nell'esempio per le mie esigenze e il risultato è stato proprio quello che volevo io. Ora sono con il cellulare, appena entro con il pc vi posto uno screenshot e spiego come ho fatto se può interessare a qualcuno...

EDIT:

Immagine

Tralasciando il fatto che ci sono solo un paio di goccioline l'effetto non è male.
l'oggetto l'ho chiamato obj_rain, nell'evento draw ho messo questo script:

var draw_x, draw_y, zheight, height_x, height_y, xwidth, ywidth, closer, dir;
// This is the rotation for wall
dir = 45

// === Theese are the variables indicating the size of this object ===
xwidth = 1
ywidth = 1
zheight = 64
texture = tex_rain3
// ===================================================================
// WARNING: DO NOT TOUCH ANYTHING BELOW! (-Only the texture-names in 'sprite_get_texture', and the blending color in 'draw_set_color', etc)
// NOTE: The depth of this object will be diffrent in every draw-event! And it will NEVER be negative!
height_x = view_wview[view_current]/zheight
height_y = view_hview[view_current]/zheight
draw_x = x+round(lengthdir_x(point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/height_x,point_direction(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)))
draw_y = y+round(lengthdir_y(point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/height_y,point_direction(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)))
closer = zheight/16
// Set the depth (fixing the "overlaps")
depth = point_distance(view_xview[view_current]+(view_wview[view_current]/2),view_yview[view_current]+(view_hview[view_current]/2),x,y)/100

// 1. DRAW TEXTURES ON THE WALLS
draw_set_color(c_white)

// The Flat Wall
draw_primitive_begin_texture(pr_trianglelist,sprite_get_texture(texture,30))

draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir+180),draw_y+lengthdir_y((ywidth/2)+closer,dir+180),0,0)
draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir),draw_y+lengthdir_y((ywidth/2)+closer,dir),1,0)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir+180),y+lengthdir_y((ywidth/2),dir+180),0,1)

draw_vertex_texture(draw_x+lengthdir_x((xwidth/2)+closer,dir),draw_y+lengthdir_y((ywidth/2)+closer,dir),1,0)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir),y+lengthdir_y((ywidth/2),dir),1,1)
draw_vertex_texture(x+lengthdir_x((xwidth/2),dir+180),y+lengthdir_y((ywidth/2),dir+180),0,1)

draw_primitive_end()


Così come è adesso, io metto nella stanza l'oggetto obj_rain e mi disegna una goccia, come posso fare per farne spawnare parecchie random in una zona precisa?
Io ho fatto così:

//Per modificare la zona della pioggia
x1 = 32
x2 = 672
y1 = 1024
y2 = 1312

//--------------------------------------------------------------------
instance_create(random_range(x1,x2),random_range(y1,y2),obj_rain)


come faccio a farlo ripetere? :?:
crei un oggetto che genererà la pioggia e setti un alarm.
Quando l'alarm finisce viene creata la pioggia e riattivi l'alarm.
Comunque sarebbe meglio mantenere la pixel art se riesci.

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: pioggia

Messaggio da doom13 »

Grazie intanto per la risposta, comunque avevo fatto così come hai detto ma avevo mettendo l'alarm a 1 appariva poca pioggia allora mi sono inventato questo script che andava sull'oggetto che ho creato apposta spawn_rain (inutile perchè non funziona, sicuramente ho sbagliato qualcosa):

//Per aumentare l'intensità della pioggia
int_rain = 20

//--------------------------------------------
while( spawn_rain.instance_count < int_rain )
{
instance_create(0,0,spawn_rain)
}


comunque ho risolto grazie! :)
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: pioggia

Messaggio da spriters2000 »

avresti anche potuto fare un for per ogni alarm e nel create

Codice: Seleziona tutto

for(i=0;i<20;i+=1){
  instance_create(dovevuoi,dovevuoi,pioggia);
}
vedi quale preferisci, comunque è solo per approfondimento

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: pioggia

Messaggio da Tizzio »

spawn_rain lo crei a 0,0
(instance_create(0,0,spawn_rain))
devi metterlo a una posizione casuale
instance_create(irandom(room_width),irandom(room_height));

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 58 ospiti