pioggia
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
pioggia
Sono nuovo su questo forum quindi se faccio qualcosa di sbagliato fatemelo notare (intanto leggo le regole ).
Ho creato un gioco, ovviamente in 2D e la visuale che ho scelto è quella dall'alto, quello che vorrei fare è aggiungere appunto la pioggia. La domanda è: come posso fare?
Ho creato un gioco, ovviamente in 2D e la visuale che ho scelto è quella dall'alto, quello che vorrei fare è aggiungere appunto la pioggia. La domanda è: come posso fare?
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: pioggia
se è un gioco laterale o fai uno sfondo scorrevole o usi gli effetti particellari, ma in gioco con visuale dall'alto non saprei
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
- enick
- GMI VIP
- Messaggi: 3749
- Iscritto il: 26/06/2011, 19:34
- Specialità: 39dll e 3D
- Località: Sardegna
- Contatta:
Re: pioggia
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.
Re: pioggia
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.
-
- Membro attivo
- Messaggi: 431
- Iscritto il: 29/07/2011, 12:04
- Specialità: Programmazione
- Contatta:
Re: pioggia
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
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
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: pioggia
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.
Un ultima cosa, rispondendo all'utente enick che intendi per calcoli del fake 3D?
EDIT:
Rigiocando il mio gioco mi sono accorto che effettivamente la visuale non è perfettamente dall'alto, ecco uno screenshot che facciamo prima:
Lasciate perdere la statua che sembra caduta, l'importante è il personaggio principale
Intanto grazie per le risposte.
Un ultima cosa, rispondendo all'utente enick che intendi per calcoli del fake 3D?
EDIT:
Rigiocando il mio gioco mi sono accorto che effettivamente la visuale non è perfettamente dall'alto, ecco uno screenshot che facciamo prima:
Lasciate perdere la statua che sembra caduta, l'importante è il personaggio principale
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- enick
- GMI VIP
- Messaggi: 3749
- Iscritto il: 26/06/2011, 19:34
- Specialità: 39dll e 3D
- Località: Sardegna
- Contatta:
Re: pioggia
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.
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: pioggia
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:
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?
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
-
- Membro attivo
- Messaggi: 431
- Iscritto il: 29/07/2011, 12:04
- Specialità: Programmazione
- Contatta:
Re: pioggia
crei un oggetto che genererà la pioggia e setti un alarm.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:
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?
Quando l'alarm finisce viene creata la pioggia e riattivi l'alarm.
Comunque sarebbe meglio mantenere la pixel art se riesci.
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: pioggia
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!
//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!
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
-
- Membro attivo
- Messaggi: 431
- Iscritto il: 29/07/2011, 12:04
- Specialità: Programmazione
- Contatta:
Re: pioggia
avresti anche potuto fare un for per ogni alarm e nel create
vedi quale preferisci, comunque è solo per approfondimento
Codice: Seleziona tutto
for(i=0;i<20;i+=1){
instance_create(dovevuoi,dovevuoi,pioggia);
}
Re: pioggia
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));
(instance_create(0,0,spawn_rain))
devi metterlo a una posizione casuale
instance_create(irandom(room_width),irandom(room_height));
Chi c’è in linea
Visitano il forum: Nessuno e 58 ospiti