Skocz do zawartości

Motionblur room'a


MXQ

Rekomendowane odpowiedzi

Jedyne co mi przychodzi do głowy, to

GML
surf=surface_create(szerokość rooma, wysokość rooma)

surface_set_target(surf)

draw_clear(c_black)

surface_reset_target()

//draw

surface_set_target(surf)

screen_redraw()

surface_reset_target()

draw_surface(0,0,surf)

Odnośnik do komentarza
Udostępnij na innych stronach

CREATE obj_mblur

GML
window_w = window_get_region_width(); //The surface width

window_h = window_get_region_height(); //The surface height

buffer = surface_create(window_w,window_h); //The buffer-surface

surface = surface_create(window_w,window_h); //The blur-surface

blur_amount = 0.34; //The amount of blur (1 is no blur, 0 is frozen-screen)

fx = window_w/display_get_width();

fy = window_h/display_get_height();

set_automatic_draw(0); //Set automatic draw to 0

draw_clear(c_black); //Clear surface memory to black.

view_xspeed = 0; //Speed of the horizontal view-sliding

view_yspeed = 0; //Speed of the vertical view-sliding

version = show_question("Are you using GameMaker Version 6.1 or under?");

 

END STEP

GML
if view_xview[0]<0 {view_xview[0]=0} //Stop the view from going too far.

if view_xview[0]>room_width-view_wview[0] {view_xview[0]=room_width-view_wview[0]} //Likewise

if view_yview[0]<0 {view_yview[0]=0} //Stop the view from going too far.

if view_yview[0]>room_height-view_hview[0] {view_yview[0]=room_height-view_hview[0]} //Likewise

view_xview[0]+=view_xspeed; //Move View appropriately

view_yview[0]+=view_yspeed; //Move View appropriately

if view_xspeed>0 {view_xspeed-=0.1} //Apply Friction to the View-Sliding

else if view_xspeed<0 {view_xspeed+=0.1} //Apply Friction to the View-Sliding

else {view_xspeed=0} //Apply Friction to the View-Sliding

if view_yspeed>0 {view_yspeed-=0.1} //Apply Friction to the View-Sliding

else if view_yspeed<0 {view_yspeed+=0.1} //Apply Friction to the View-Sliding

else {view_yspeed=0} //Apply Friction to the View-Sliding

surface_set_target(buffer); //Set the surface target to the buffer

draw_clear_alpha(c_black,0);

screen_redraw(); //Redraw the screen, capturing it onto the buffer-surface.

surface_set_target(surface); //Set the surface target to the blur.

draw_clear_alpha(c_black,1);

 

draw_set_blend_mode_ext(7,11); //Unique Blend Mode

draw_surface(buffer,0,0); //Draw the buffer-surface (screen)

draw_set_blend_mode(bm_normal); //Reset Blend Mode

surface_reset_target(); //Reset Target

//If we're using GM6.1 this script is requires to work around a bug. If you're using 7.0 this script is not used.

if version=1

{

d3d_transform_set_identity();

d3d_transform_set_scaling(fx,fy,0);

}

 

draw_surface_ext(surface,0,0,1,1,0,c_white,blur_amount); //Draw the surface correctly.

d3d_transform_set_identity();

screen_refresh(); //Present the result.</span>

Odnośnik do komentarza
Udostępnij na innych stronach

big thanks :thumbsup:

czyi to kod?

 

E: jeszcze małe pytanko, co zrobić żeby po zniszczeniu tego obiektu gra się nie zawieszała?

 

Z Effect engine 3.1

JEszcze takie coś jest W room end

GML
set_automatic_draw(1); //Reset the drawing methods to automatic.

surface_free(buffer);

surface_free(surface);

Odnośnik do komentarza
Udostępnij na innych stronach

w create:

GML
blur_amount = 0.10;

 

daj w step np:

GML
if(blur_amount<1)

{

blur_amount+=.001;

}

 

Mi działa ładnie, na początku jest gęsty blur który w czasie zwiększania zmiennej blur_amount się zmniejsza aż zanika (blur_amount==1)

Odnośnik do komentarza
Udostępnij na innych stronach

@up

aa po prostu zamiast dodawać to odejmowałem tę wartość, dzięki :)

 

otwieram temat, bo mam znów problem!

otóż kiedy view jest dość daleko od pozycji 0,0 w roomie to motion blur nie działa :(

E: a jednak tu chodzi o to że jak 2-gi raz zostanie stworzony obiekt odpowiedzialny za motion blur'a to wtedy nie działa motion blur

Bardzo bardzo pilne!

 

to naprawdę mega ważne!

a jednak tu chodzi o to że jak 2-gi raz zostanie stworzony obiekt odpowiedzialny za motion blur'a to wtedy nie działa motion blur

o to chodzi :(

 

dobra, drugi raz odświeżam, ale na serio jest mi to potrzebne dzisiaj!

chodzi o to że jak 2-gi raz zostanie stworzony obiekt odpowiedzialny za motion blur'a to wtedy nie działa motion blur

^ ^ ^ ^ ^ ^ ^ ^

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

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ę...