Skocz do zawartości

Włączanie i wyłączanie telewizji.


Rekomendowane odpowiedzi

Cześć, chcę zrobić w grze możliwość włączenia i wyłączenia telewizora, ale mam tu mały problem.

 

CREATE TELEWIZORA

 

GML
on=false /// telewizor nie jest włączony

gra=false /// telewizor nie "gra"

off=true /// telewizor jest wyłączony</span>

 

STEP TELEWIZORA

 

GML
if on=true and gra=true{ //// jeśli telewizor gra i jest włączony

sprite_index=s_tv_on /// sprite włączonego TV

image_speed=(0.3)

if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7)

{

sound_play( sound7 );

}

if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //tutaj zmienne odnośnie wyciszania itp w miarę oddalania się od TV

{

sound_volume( sound7, 1 - distance_to_object( player ) / 300 );

gra=false /// aby po przeleceniu dźwięku TV przestał grać

}

}

 

else

 

if on = true and gra = false{ /// jeśli jest włączony, ale nie ma dźwięku

sound_stop(sound7)

sprite_index=s_tv_off

}

 

else

 

if on = false and gra = false and off=true{ ///jeśli po prostu jest wyłączony

sound_stop(sound7)

sprite_index=s_tv

}

 

 

KOLIZJA Z GRACZEM

 

GML
if keyboard_check(vk_space) { ///wciskam spację telewizor ma się włączyć, ale to się nie dzieje

on=true

gra=true

off=false

}

 

if on=true and keyboard_check(vk_space){ ///analogiczna sprawa, wyłączenie

on=false

off=true

}

 

Problem polega na tym, że ów telewizor nie reaguje na to, jak wciskam spację i po prostu stoi wyłączony :/

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if on==true and gra==true{

sprite_index=s_tv_on

image_speed=(0.3)

if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7)

{

sound_play( sound7 );

}

if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zwróć uwagę na wykrzyknik bo tu go nie ma jak wyżej

{

sound_volume( sound7, 1 - distance_to_object( player ) / 300 );

gra=false

}

}

 

else

 

if on == true and gra == false{

sound_stop(sound7)

sprite_index=s_tv_off

}

 

else

 

if on == false and gra == false{

sound_stop(sound7)

sprite_index=s_tv

}

 

No jest wszędzie.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if on==true and gra==true{ /// jeśli jest TV włączony i ma grać

sprite_index=s_tv_on /// jaki ma być sprite i jego prędkość

image_speed=(0.3)

if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7)

{

sound_play( sound7 );

}

if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zmienne odnośnie wyciszania i podgłośnienia w miarę zbliżania/oddalania się.

{

sound_volume( sound7, 1 - distance_to_object( player ) / 300 );

gra=false // po końcu dźwięku gra ma być na false

}

}

 

else

 

if on == true and gra == false{ // jeśli jest włączony ale już nie gra

sound_stop(sound7)

sprite_index=s_tv_off

}

 

else

 

if on == false and gra == false{ // jeśli nie gra i jest wyłączony

sound_stop(sound7)

sprite_index=s_tv

}

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi mi o if.

np w

GML
if on == false and gra == false{ // jeśli nie gra i jest wyłączony

sound_stop(sound7)

sprite_index=s_tv

}

nie masz ;

powinno być

GML
if on == false and gra == false{ // jeśli nie gra i jest wyłączony

sound_stop(sound7);

sprite_index=s_tv;

}

 

Ale to raczej nie ma znaczenia.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm, właśnie. Pewnie ma tak, że klika spacje włącza się od razu wyłącza.

Możesz dać tak:

GML
if keyboard_check_pressed(vk_space) { ///wciskam spację telewizor ma się włączyć, ale to się nie dzieje

on=true

gra=true

off=false

}

 

if on=true and keyboard_check_pressed(vk_enter){ ///analogiczna sprawa, wyłączenie

on=false

off=true

}

Odnośnik do komentarza
Udostępnij na innych stronach

Działa, jeszcze jedno, coś musiałem zwalić w kodzie, bo chcę żeby gra=false nastąpiło dopiero po przeleceniu sound7

 

GML
if on==true and gra==true{

sprite_index=s_tv_on;

image_speed=(0.3);

if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7)

{

sound_play( sound7 );

}

if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zwróć uwagę na wykrzyknik bo tu go nie ma jak wyżej

{

sound_volume( sound7, 1 - distance_to_object( player ) / 300 );

if( !sound_isplaying( sound7 )){

sound_stop(sound7)

sprite_index=s_tv_off

}

 

}

}

 

 

 

 

else

 

if on == true and gra == false{

sound_stop(sound7);

sprite_index=s_tv_off;

}

 

else

 

if on == false and gra == false{

sound_stop(sound7);

sprite_index=s_tv;

}

 

I chcę żeby sound 7 się nie powtarzał, a po jego końcu zmienił się sprite index.

Odnośnik do komentarza
Udostępnij na innych stronach

Mój kod, który robi wszystko to, co chcesz. Zrób kopię zapasową projektu na wszelki wypadek, nie sprawdzałem tego kodu.

Create:

GML
on = -1

playing = -1

image_speed = 0.3

Step:

GML
if(on) //kod przy włączonym TV

{

if(distance_to_object(player) < 300) //jeśli wystarczająco blisko

{

sprite_index = s_tv_on //zmienia sprite'a

if(!sound_isplaying(sound7)) //jeżeli jeszcze nie jest włączony dźwięk

{

if(playing) //i jeżeli dźwięk ma się włączyć

{

sound_play(sound7) //włącz go

playing = -1 //nie włączaj ponownie dźwięku

}

}

else //jeżeli już włączony

{

sound_volume(sound7,max(0,1-(distance_to_object(player)/300))) //reguluj głośność

}

}

else //po oddaleniu się od telewizora

{

if(!sound_isplaying(sound7)) //jeżeli dźwięk już nie gra

{

sprite_index = s_tv_off //zmień sprite'a

}

}

}

else //kod przy wyłączonym TV

{

sprite_index = s_tv //zmień sprite'a

}

Collision with: Player

GML
if(keyboard_check_pressed(vk_space))

{

on *= -1 //naciśnięcie spacji włącza/wyłącza TV

if(on) playing = 1 //jeżeli TV włączony, włącz dźwięk

else sound_stop(sound7) //w przeciwnym wypadku wyłącz go

}

 

Mała propozycja: zamiast true/false używaj 1/-1, dzięki temu kod:

GML
if(x = true) x = false

else x = true

zamienisz na:

GML
x *= -1

lub

GML
x = -x
Odnośnik do komentarza
Udostępnij na innych stronach

EDIT

GML
if(on) //kod przy włączonym TV

{

if(!playing) sprite_index = s_tv_off //jeśli dźwięk nie włączony, zmień sprite'a

else sprite_index = s_tv_on //w przeciwnym wypadku zmień sprite'a

if(distance_to_object(player) < 300) //jeśli wystarczająco blisko

{

if(!sound_isplaying(sound7)) //jeżeli jeszcze nie jest włączony dźwięk

{

if(playing) //i jeżeli dźwięk ma się włączyć

{

sound_play(sound7) //włącz go

playing = -1 //nie włączaj ponownie dźwięku

}

}

else //jeżeli już włączony

{

sound_volume(sound7,max(0,1-(distance_to_object(player)/300))) //reguluj głośność

}

}

else //po oddaleniu się od telewizora

{

sound_volume(sound7,0) //wycisz TV

}

}

else //kod przy wyłączonym TV

{

sprite_index = s_tv //zmień sprite'a

}

Drobna pomyłka, sry :\

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
Cześć, chcę zrobić w grze możliwość włączenia i wyłączenia telewizora, ale mam tu mały problem.

 

CREATE TELEWIZORA

 

GML
on=false /// telewizor nie jest włączony

gra=false /// telewizor nie "gra"

off=true /// telewizor jest wyłączony</span></span>

 

 

on = false, off = true? no proszę ja Ciebie...

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