Skocz do zawartości

Zablokowane menu


Rekomendowane odpowiedzi

Ok, zrobiłem sobie obiekt pauza i wstawiłem go do roomu :)

 

Odpalam grę i wywaliło mi czarny kwadrat, ale bez alphy, a po wciśnięciu eskejpu nic się nie stało.

 

W draw pauzy wstawiłem:

 

while ( true )

{

 

draw_set_color(c_black)

draw_set_alpha(0.5)

draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0)

draw_set_alpha(1)

 

if ( keyboard_check(vk_escape)) break;

instance_destroy()

screen_refresh()

}

 

Co zrobiłem źle? Bo chyba Cię nie zrozumiałem :P

Odnośnik do komentarza
Udostępnij na innych stronach

To właśnie ten break powoduje zamknięcie pętli która zatrzymuje grę.

Ta pętla while nie może być w stepie

 

sorry miało być check_direct

 

małe poprawki:

GML
while ( true )

{

 

draw_clear(0);

draw_set_color(c_black)

draw_set_alpha(0.5)

draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0)

draw_set_alpha(1)

 

if ( keyboard_check_direct(vk_escape))

{

instance_destroy();

break;

}

screen_wait_vsync();

screen_refresh();

}

keyboard_clear(vk_escape); // zapomniałem o tym xd</span>

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki Huder :)

 

 

Ale teraz chcym zrobić, żeby ko kliknięciu w rysowany kwadracik coś się stało, ale nie mam pomysłu jak to zrobić :/

Mam taki kodzik, ale średnio działa:

GML
While(true){

draw_set_color(c_lime)

draw_rectangle(50,200,150,250,0)

draw_set_color(c_black)

draw_text(55,205,'KONTYNUUJ')

 

draw_set_color(c_lime)

draw_rectangle(200,200,300,250,0)

draw_set_color(c_black)

draw_text(205,205,'WYJDZ')

 

if ( keyboard_check_direct(mb_left)){

x=mouse_x

y=mouse_y

 

if collision_rectangle(50,200,150,250,pauza,0,0){

instance_destroy()

}else

if collision_rectangle(200,200,300,250,pauza,0,0){

game_end()

}

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

napisz sobie skrypt sprawdzający czy myszka jest w określonym prostokącie:

GML
// mouse_rect_enter(x1, y1, x2, y2)

return ( mouse_x > argument0 && mouse_x < argument2 && mouse_y > argument1 && mouse_y < argument3 );

 

i teraz za jego pomocą możesz sprawdzić czy został naciśnięty dany obszar myszką np tak:

GML
if ( mouse_check_button(mb_left) )

{

if ( mouse_rect_enter( 50 ,200, 150, 250 ) ) ) { instance_destroy(); break; mouse_clear(mb_left); }

if ( mouse_rect_enter( 200, 200, 300, 250 ) ) ) { game_end(); break; }

}

Odnośnik do komentarza
Udostępnij na innych stronach

nie. :P

 

Ale chyba wiem co, zaraz sprawdzę i powiem :)

 

E: A jednak nie, myślałem, że przy tym while nie wykonują się skrypty, ale jak wrzuciłem skrypt (if mouse_x>50 itd) w draw to też nie działa

 

E2: A może ta funkcja keyboard_check_direct(mb_left) jest nie poprawna, bo to nielogicznie brzmi. niby keyboard check, a w nawiasie myszka

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem :D Powiedz co jest źle bo nie działa, proszę:

 

GML
while ( true ){

draw_set_color(c_black)

draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0)

draw_set_color(c_white)

draw_text(15,15,'Menu pauzy')

 

if ( keyboard_check_direct(vk_escape)){

instance_destroy();

break;

}

 

 

draw_set_color(c_lime)

draw_rectangle(50,200,150,250,0)

draw_set_color(c_black)

draw_text(55,205,'KONTYNUUJ')

 

draw_set_color(c_lime)

draw_rectangle(200,200,300,250,0)

draw_set_color(c_black)

draw_text(205,205,'WYJDZ')

 

if ( mouse_check_button(mb_left)){

if (script0(50,200,150,250){

instance_destroy()

}else

if script0(200,200,300,250){

game_end()

}

}

screen_wait_vsync();

screen_refresh();

keyboard_clear(vk_escape);

}

 

I cytat z dokumentacji:

keyboard_check_direct(key)

Podobny do keyboard_check, z tym że sprawdza to z poziomu sprzętu, dzięki temu gra odczytuje naciśnięcie nawet kiedy okno gry nie jest aktywne. Umożliwia to także sprawdzenie klawiszy: vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol, vk_ralt oraz przycisków myszy: mb_left, mb_middle i mb_right.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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