Skocz do zawartości

Deszcz Top Down - Przykład


Rekomendowane odpowiedzi

Ostatnio szukałem przykładu deszczu top down do mojej gierki lecz niestety nie znalazłem, więc postanowiłem napisać własny i udostępnić go, może kiedyś komuś się on przyda.

W przykładzie jeden obiekt który tworzy deszcz za pomocą draw_sprite_ext(), wystarczy podać gęstość. Gęstość czy też siła opadu standardowa to 100. Jeśli ktoś chce może popróbować, mi komp zaczol odmawiać posłuszenstwa przy jakichś 20k gęstości.

 

Screen:

rain.png

 

Download: https://gmclan.org/up4891_4_deszcz_top_down.html

Odnośnik do komentarza
Udostępnij na innych stronach

generalnie spoko, ale nie ma prysku przy kolizji z podłożem, i ten pusty środek... jakbyś leciał samolotem to byś zauważył, że nie ma czegoś takiego. albo jak zmiejszymy ten promień z 80 na np. 10 to znowu rogi są 'puste'. no ale kod prosty i wszystko da się zmienić dla swoich potrzeb. niejednemu się przyda

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Jak ustawiam małą wartośc, np. 5, to krople spadają ciągle z tego samego miejsca, a tak być nie powinno (np. jak chcę zrobić efekt od mżawki, potem kapuśniaczek, deszczyk, deszcz, ulewę i sztorm, zwiększając ilość)

Odnośnik do komentarza
Udostępnij na innych stronach

Co do tego, może dodasz błyskwice top down? xD

 

Taa.. tylko nie jestem w stanie wyobrazić sobie takiego czegoś :D

 

Jak ustawiam małą wartośc, np. 5, to krople spadają ciągle z tego samego miejsca, a tak być nie powinno (np. jak chcę zrobić efekt od mżawki, potem kapuśniaczek, deszczyk, deszcz, ulewę i sztorm, zwiększając ilość)

 

Spoko w następnej wersji dodam losowość, nie pomyślałem o tym.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...

gdy usuwam 2

__________________________________________

ERROR in

action number 1

of Create Event

for object deszcz:

 

Error in code at line 8:

for ( i = 1; i < a+1; i += 1 )

^

at position 23: Unknown variable a

 

a gdy 1 i 2

 

ERROR in

action number 1

of Create Event

for object deszcz:

 

Error in code at line 7:

for ( i = 1; i < a+1; i += 1 )

^

at position 23: Unknown variable a

 

a gdy 1,2 i 7

___________________________________________

ERROR in

action number 1

of Create Event

for object deszcz:

 

Error in code at line 8:

global.rain[i,0] = deszcz;//sprite deszczu

^

at position 22: Unknown variable i

 

 

sprite na pewno jest i dział bez przeróbek

Odnośnik do komentarza
Udostępnij na innych stronach

at position 22: Unknown variable i

 

 

sprite na pewno jest i dział bez przeróbek

co ma variable i do sprite?

ludzie... czy wy kiedykolwiek zaczniecie myslec samodzielnie?

musisz samemu ustawic zamiast tej linii jak mozcy chcesz deszcz, czyli a=sila_deszczu

Odnośnik do komentarza
Udostępnij na innych stronach

nadal nic nie rozumiem

dam kod żeby nie trzba było ściągać

 

create

GML
show_info();

a = get_integer('Ilosc opadu :',100);//ilosc opadu standardowo na 100

global.kolo = 360;//odpowiada 360 stopniom okregu

global.RoomCenterWidth = (room_width/2);//pozycje centralne rooma

global.RoomCenterHeight = (room_height/2);//pozycje centralne rooma

global.RoomCenterWidth_x = global.RoomCenterWidth+80;//a to z kolei długości wektorów tutaj wektora X

global.RoomCenterHeight_y = global.RoomCenterHeight+80;//a tu wektor Y

for ( i = 1; i < a+1; i += 1 )

{

global.rain[i,0] = kropla;//sprite deszczu

global.rain[i,1] = global.kolo/a

global.rain[i,2] = global.RoomCenterWidth+lengthdir_x(global.RoomCenterWidth_x,global.rain[i,1]*i);//pozycje kazdego deszczu(x)

global.rain[i,3] = global.RoomCenterHeight+lengthdir_y(global.RoomCenterHeight_y,global.rain[i,1]*i);//pozycje kazdego deszczu(y)

global.rain[i,4] = point_direction( global.rain[i,2], global.rain[i,3],global.RoomCenterWidth,global.RoomCenterHeight );//point direction

global.Add = round(random(150));//losowosc oddalenia/przyblizenia

}

 

alpha = 1;

xscale = 1;

yscale = 1;

 

Draw

GML
for (j=1;j<a+1;j+=1)//petla wyswietlajaca deszcz

{

alpha -= 0.4//alpha deszczu

xscale -= round(random(0.05));

yscale -= round(random(0.05));

draw_sprite_ext(global.rain[j,0],true,global.rain[j,2],global.rain[j,3],xscale, yscale,global.rain[j,4], image_blend,alpha);//rysowanie sprite z odpowiednimi wartosciami

global.Add[j] += round(random(5))+5//speed spadajacego deszczu

global.rain[j,2] = global.RoomCenterWidth+lengthdir_x(global.RoomCenterWidth_x-global.Add[j],global.rain[j,1]*j);//no i wiadomo rysowanie zaktualizowanych pozycji deszczu

global.rain[j,3] = global.RoomCenterHeight+lengthdir_y(global.RoomCenterHeight_y-global.Add[j],global.rain[j,1]*j);//to co wyzej

if (global.Add[j] > 150) then global.Add[j] = 0; alpha = 1; xscale = 1; yscale = 1; //jesli deszcz leci "za dlugo" to zerujemy

}

 

trzeba przerobić tak żeby nie było pytanie o ilość opadów:)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
to znaczy?

Bożesz ty mój, ty to nawet w necie kozak nie jesteś

 

create

GML
show_info();

a = 100;

global.kolo = 360;//odpowiada 360 stopniom okregu

global.RoomCenterWidth = (room_width/2);//pozycje centralne rooma

global.RoomCenterHeight = (room_height/2);//pozycje centralne rooma

global.RoomCenterWidth_x = global.RoomCenterWidth+80;//a to z kolei długości wektorów tutaj wektora X

global.RoomCenterHeight_y = global.RoomCenterHeight+80;//a tu wektor Y

for ( i = 1; i < a+1; i += 1 )

{

global.rain[i,0] = kropla;//sprite deszczu

global.rain[i,1] = global.kolo/a

global.rain[i,2] = global.RoomCenterWidth+lengthdir_x(global.RoomCenterWidth_x,global.rain[i,1]*i);//pozycje kazdego deszczu(x)

global.rain[i,3] = global.RoomCenterHeight+lengthdir_y(global.RoomCenterHeight_y,global.rain[i,1]*i);//pozycje kazdego deszczu(y)

global.rain[i,4] = point_direction( global.rain[i,2], global.rain[i,3],global.RoomCenterWidth,global.RoomCenterHeight );//point direction

global.Add = round(random(150));//losowosc oddalenia/przyblizenia

}

 

alpha = 1;

xscale = 1;

yscale = 1;

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...