Skocz do zawartości

Przejście


Rekomendowane odpowiedzi

Mam pytanie:

W wielu grach z tego forum widziałem subtelne przejście pomiędzy room`ami - chodzi o wyciemnienie/znikanie. W "klocku" nie mogłem go znaleźć - były tylko jakieś żaluzje, wypychania i zakrywania. Mógłby ktoś powiedzieć, jak uzyskać takie przejście?

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz tak zrobić:

 

obj_fade_out ( twórz ten obiekt podczas zmiany rooma )

CREATE:

GML
zmienna = 0;

DRAW:

GML
draw_set_alpha( zmienna );

draw_rectangle_color( 0, 0, room_width, room_height, c_black, c_black, c_black, c_black, 0 );

zmienna += 0.05;

if ( zmienna >= 1 ) room_goto_next(); // przejdzie do nastepnego rooma

 

obj_fade_in ( twórz ten obiekt podczas startu rooma )

CREATE:

GML
zmienna = 1;

DRAW:

GML
draw_set_alpha( zmienna );

draw_rectangle_color( 0, 0, room_width, room_height, c_black, c_black, c_black, c_black, 0 );

zmienna -= 0.05;

if ( zmienna <= 0 ) instance_destroy();

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, dzięki wielkie, działa. :D

 

EDIT:

Kolejny problem mam (nie chciałem zakładać nowego tematu):

Załóżmy, że jest gra, w której health się ciągle zmienia (maleje o 1 co 5 klatek). Co powinienem zrobić, żeby wstawiał się jakiś obiekt , kiedy wartość health znajduje się w jakimś przedziale (np od 50 do 65) i usuwał się, gdy health wychodzi poza ten przedział? Ale tak, by ten obiekt wstawiał się tylko raz (gdy bawiłem się z klockami "If health has a value", to obiekt wstawiał się cały czas i dźwięk, który miał on wytwarzać, stale się na siebie nakładał).

Jeśli to coś zmienia, to korzystam z Game Makera 6,1.

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, dzięki wielkie, działa. :D

 

EDIT:

Kolejny problem mam (nie chciałem zakładać nowego tematu):

Załóżmy, że jest gra, w której health się ciągle zmienia (maleje o 1 co 5 klatek). Co powinienem zrobić, żeby wstawiał się jakiś obiekt , kiedy wartość health znajduje się w jakimś przedziale (np od 50 do 65) i usuwał się, gdy health wychodzi poza ten przedział? Ale tak, by ten obiekt wstawiał się tylko raz (gdy bawiłem się z klockami "If health has a value", to obiekt wstawiał się cały czas i dźwięk, który miał on wytwarzać, stale się na siebie nakładał).

Jeśli to coś zmienia, to korzystam z Game Makera 6,1.

 

Spróbuj tak:

 

Create:

GML
zostal_wstawiony = false

 

Step

GML
if (health > 50)&&(health < 65)&&(zostal_wstawiony = false)

{

//akcja

zostal_wstawiony = true

}

else

{

with (obiekt) instance_destroy() // nie wiem, czy chcesz niszczyć ten obiekt czy inny

// dlatego dałem kod na inny :)

}

 

:P

Odnośnik do komentarza
Udostępnij na innych stronach

Nie chce działać. :/ Właściwie, to ja nie potrafię scriptować i stąd problemy.

Robłem tak, że w obiekcie, który miał stworzyć ten obiekt, który ma się pojawiać (o nazwie obj_speach) w CREATE zamiast zostal_wstawiony = false wpisywałem instance_create( 0, 0, obj_speach) = false. W STEP też podmieniałem wtedy każde zostal_wstawiony. Z kolei tam, gdzie było (objekt) wpisywałem (obj_speach). Cały czas wyskakiwał błąd odnośnie pierwszego kodu, a gdy wpisywałem spowrotem zostal_wstawiony, to nic się nie działo - script nie działał.

Odnośnik do komentarza
Udostępnij na innych stronach

w CREATE zamiast zostal_wstawiony = false wpisywałem instance_create( 0, 0, obj_speach) = false.

:huh: o żesz kur...

a gdy wpisywałem spowrotem zostal_wstawiony, to nic się nie działo - script nie działa

a napewno we wszystkich kodach określasz życie bohatera zmienną health?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie chce działać. :/ Właściwie, to ja nie potrafię scriptować i stąd problemy.

Robłem tak, że w obiekcie, który miał stworzyć ten obiekt, który ma się pojawiać (o nazwie obj_speach) w CREATE zamiast zostal_wstawiony = false wpisywałem instance_create( 0, 0, obj_speach) = false. W STEP też podmieniałem wtedy każde zostal_wstawiony. Z kolei tam, gdzie było (objekt) wpisywałem (obj_speach). Cały czas wyskakiwał błąd odnośnie pierwszego kodu, a gdy wpisywałem spowrotem zostal_wstawiony, to nic się nie działo - script nie działał.

 

Na pewno działa, bo sprawdzałem.

 

Nie zmieniaj nic.

 

W miejsce:

health - wpisz zmienną, jaką używasz do określania życia.

obiekt - wpisz nazwe obiektu, który ma być niszczony

//akcja - wystarczy wpisać akcja, jaka chcesz żeby się działa gdy życie znajdzie się w przedziale 50-65

 

i tyle :)

 

A jak to nie pomoże, to podaj wszystkie kody z eventów z obiektu do którego chcesz to wrzucić i nazwę obiektu który ma być niszczony :)

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, dzięki wielkie, działa, jest jeszcze tylko jeden problem: script ten działa jednorazowo, tzn. że jak health wejdzie w obszar 50-65, to objekt obj_speach się wstawia, gdy health z niego wyjdzie - obj_speach się usuwa, lecz gdy health ponownie wkroczy w przedział 50-65, to obj_speach się ponownie nie pojawia.

Próbowałem rozwiązać to, wpisując na końcu drugiego scriptu

 

if (health < 50)&&(health > 65)&&(zostal_wstawiony = true)

{

zostal_wstawiony = false

}

 

...nic to jednak nie dało (widać nie trafiłem wymyślając kod).

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, dzięki wielkie, działa, jest jeszcze tylko jeden problem: script ten działa jednorazowo, tzn. że jak health wejdzie w obszar 50-65, to objekt obj_speach się wstawia, gdy health z niego wyjdzie - obj_speach się usuwa, lecz gdy health ponownie wkroczy w przedział 50-65, to obj_speach się ponownie nie pojawia.

Próbowałem rozwiązać to, wpisując na końcu drugiego scriptu

 

if (health < 50)&&(health > 65)&&(zostal_wstawiony = true)

{

zostal_wstawiony = false

}

 

...nic to jednak nie dało (widać nie trafiłem wymyślając kod).

 

Bo ja myślałem, że on ma w ogóle wstawiać się tylko raz :P

 

Create:

GML
zostal_wstawiony = false

 

Step:

GML
if (health > 50)&&(health < 65)&&(zostal_wstawiony = false)

{

//akcja

zostal_wstawiony = true

}

else

{

with (obiekt) instance_destroy() // nie wiem, czy chcesz niszczyć ten obiekt czy inny

// dlatego dałem kod na inny

zostal_wstawiony = false

Odnośnik do komentarza
Udostępnij na innych stronach

Już prawie działa, ale jednak znów problem się pojawił. :/

W drugim scripcie nie wstawiłeś na końcu "}". Kiedy wstawiam go przed zostal_wstawiony = false, to obj_speach (gdy health wynosi 50-65), wstawia się co klatkę, czego efektem jest nakładanie się na siebie głosu, który ma on tworzyć. Z kolei, gdy "}" umieszczam zaraz za zostal_wstawiony = false, to obj_speach w jednej klatce się wstawia, a w następnej usuwa, w kolejnej znów wstawia i potem znowu usuwa - taka migawka. Nie może on przez to dokończyć wytwarzanego przez siebie dźwięku i innych akcji. Wszystko ustaje, gdy health wychodzi ze strefy 50-65.

Fajnie byłoby, gdyby obj_speach, po prostu był, gdy health = 50-65, i nie było go, gdy health ma inną wartość.

 

EDIT:

Ok, dałem radę - trochę inaczej skonstruowałem resztę, ale script się przydał. Dzięki za pomoc. :D

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