Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez pankracy

  1. Czyli przenieść cały kod ze zdarzenia Step do Animation Start a w zdarzeniu create dodać zmienną np start = false następnie tą zmienną start = true ustawić w zdarzeniu Animation Start. Animation End ustawić zmienną start na false. Probuje sobie to wyobrazić A jak np troche spowolnić odbicie gracza? Powinienem zmniejszyć grawitacje? W obiekcie dziedziczacym par_entity mam tam zmienne dla bohatera i obiektóww grze np grawitacje mam ustawioną na wartość 1.
  2. Czy ktoś z was rozwiązywał podobne zagadnienie lub jest wstanie mi pomóc?
  3. Cześć wszystkim. Mam w grze trampoline która ma ustawiony kąt 45 stopni.W ten sposób uzyskuje do przodu odbicie po łuku. Kod działa! ale chciałbym uzyskać taki efekt Opis: Od trampoliny gracz może się odbic tylko w chwili kiedy odtwarzana będzie animacja trampoliny.Jak animacja nie będzie odtwarzana to gracz nie będzie mógł się od niej odbić.Można by było trochę skok paraboliczny zwolić np ustawić odpowiednio grawitacje aby troche wolniej leciał gracz jak się odbije. Czyli np co 5 sekund jest odtwarzana animacja i gracz wtedy może się odbić. I druga sprawa dźwièk trampoliny powinien odtwarzać się w chwili wyswietlania animacji oraz na bliskim dystanie od gracza. Sprawę z wyswietlaniem animacji można rozwiązac używając zapewne zdarzenia Alarm ale dalej nie mam pomysłu na resztę. Bardzo dziękuję z góry wszystkim za pomoc. Kod parabolicznej trampoliny wyglada tak: Bardzo przepraszam za format ale odpisuje z telefonu. Obj_trampolina Create image_speed = 0; pwr = 152; Step if place_meeting(x,y,par_entity) { with instance_place(x,y,par_entity) { hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Animation end image_index = 0; image_speed = 0;
  4. Fajny ten twój generator.Widzę,że też od razu tworzy kontur twój generator. ? Musiałbym tylko czcionkę dodać którą chce poddać edycji. Mam kilka pytań do tej funkcji 1. Nie chce mi się wyświetlać napis "Przykład" ale za to wyświetla się napis "11111" jeśli wstawię w to miejsce cyfry. Co może być tego powodem? 2.Czy w tej funkcji można sterować rozmiarem czcionki? bo jeśli nie to dla każdego tekstu musiałbym przygotować odrębny sprite czcionki z dobranym rozmiarem font_add_sprite_ext font_main = font_add_sprite_ext(font_test, "!$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^+`abcdefghijklmnopqrstuvwxyz{|}~€ąćęłńóśżźĄĆĘŁŃÓŚŻŹ", true, 0); draw_text(x+400,y,"Przykład") I ostatnie pytanie odnośnie tego posta A powiedz czy powyższy kod będzie wydajny? Simian wspomniał,że nie jest pewien czy będzie te rozwiązanie jego wydajne ze względu na wykonanie 361 kroków. Dziękuję za każda odpowiedź i pomoc ?
  5. Może ktoś z was mógłby pomóc rozwiązać ten problem. Mam skrypt który tworzy kontur do czcionki. Problem polega na tym,że kontur tworzy się nie przylegając do czcionki a jest przesunięty od czcionki tworzac brzydki niewyraźny tekst. Jak to naprawić? Powinien przylegać bezpośrednio do czcionki Dziękuję Tu poniżej skrypt /// arg0 - x, arg1 - y, arg2 - text, arg3 - sep, arg4 - w, arg5 - color konturu, arg6 - color textu, arg7 - alpha, arg8 - grubość konturu draw_text_ext_color(argument0-argument8, argument1, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0+argument8, argument1, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1-argument8, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1+argument8, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1+argument7, string(argument2), argument3, argument4, argument6, argument6, argument6, argument6, argument7)
  6. pankracy

    CV 16 latka

    Oj tam czepiacie się;-) chłopak się stara... przecież liczą się dobre chęci
  7. Używam jeszcze w jednym obiekcie aplication_surface..tak było od początku w tym silniku gry...tylko usunąłem tą linijkę którą mi zasugerowałeś żebym to zrobił,bo wychodziły wtedy dziwne anomalia z rozdzielczością Zostawiłem sobie tak: na pełnym ekranie mimo,że mam view ustawiony na 1280x720 to gra uruchamia się na pełny ekran i pokazuje 1920x1080 ok tak mi odpowiada..zresztą to już dawno jest standardem i większość monitorów to obsłuży.. Natomiast w oknie gry samo dostosowuje sobie proporcje ekranu tylko muszę ustawić szerokość np 720p lub inną dowolną obj_global_controller begin step ///Wyswietlanie widoku okna gry if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); //display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa } co do alarmu nie zjadłem go..tylko celowo usunąłem bo jak jest włączony to znika mi pasek gui lub dziwnie się zachowuje..dlatego usunąłem tą linijkę
  8. Dziękuję...pomogło...miałeś rację w zdarzeniu create na sztywno miałem przypisaną nazwę dla przycisku.. Wiem,że gms 1.4 jest nie wspierany od 3 lat,ale sporo osób jeszcze go używa..ba nawet znam takich co jeszcze używają wersję 8.1 Gnysku powiedz mi jeszcze... uszczuplę kod żeby nie wklejać tu wszystkiego.. czy ta część kodu powinna być w zdarzeniu alarm[0] lub dowolny inny alarm? bo jak wrzucę to do zdarzenia step to gui się psuje...więc mam to w alarmie i jest teraz dobrze.. czyli mam dokładnie tak // create display_set_gui_size(1280, 720) full_screen = -1; // step if (full_screen != window_get_fullscreen()) { full_screen = window_get_fullscreen(); } // alarm0 if (full_screen) { display_set_gui_maximize( 1, 1 ); } else { display_set_gui_maximise( room_width/1280,room_height/720 ); } No i druga ostatnia już sprawa...bo nie chce Cie już męczyć..przynajmniej dziś ;-) nie no żartuje...dużo mi pomogłeś i bardzo dziękuję Ci za pomoc.. Używam tego kodu do naprawy wyświetlania grafiki jak skończę grę i wracam do menu gry... i to ładnie działa..ale jak mam teraz nowy kod od ciebie to zakomenderowałem tą linijkę kodu display_set_gui_maximise() Ponieważ wtedy rozwala mi się menu GUI..raz jest ok,a raz nie..dlatego to wyłączyłem i tego zjawiska już nie ma.. ale pytanie,czy muszę tu wstawić jakieś wartości? czy wystarczy,że to wyłączyłem.. poniżej kod.. obj_poprawa_grafika create surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise()//tu wyłaczylem tą linikę,bo przy włączonej tej funkcji psuje mi się całe gui w oknie gry obj_poprawa_grafika1 step if(instance_exists(obj_global_controller)) {with(obj_game_controller){instance_destroy()}} surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise() //to samo wyłaczyłem bo włączenie tej funkcji psuje mi gui..na w oknie gry draw_texture_flush()
  9. To nie pomaga...ale coś odkryłem...Gnysku i wygląda na to,że jest to przyczyna powstawania tego problemu otóż.. kiedy tutaj wstawię zamiast display_set_gui_maximize( window_get_width()/1280, window_get_height()/720 ); to display_set_gui_maximise( room_width/1280,room_height/720 ); Przecież mam włączone view w planszach gdzie mam scenerię gry i chodzę bohaterem..a view wszędzie jest ustawiony na 1280x720..wiadomo,że sceneria ma rożne wymiary,ale to nie ma wpływu na wyświetlanie się na warstwie GUI pauzy zegara i paska HUD prawda? To przez dosłownie ułamek sekundy w trybie okienkowym pasek hud oraz zegar jest w prawidłowej pozycji i ładnie skalowany..ale zaraz to znika.. pauza też przez ułamek sekundy jest dobrze skalowana i w dobrej pozycji,ale później już się psuje..Wiem wina alarmu...można to naprawić? tu przykład... menu gry nie mam włączonych view,bo tam grafika ma rozmiary planszy czyli 1280x720... a plansze gdzie jest rozgrywka w grze gdzie chodzi bohater są różnego rozmiaru,ale z ustawionym podglądem gry view 1280x720...wszędzie tak ustawiłem Edycja 1 Wywaliłem w zdarzeniu step linijkę z alarmem alarm[0] = 10; I teraz wszystkie jest w porządku;-) pauza zegar i pasek hud idealnie skalują się na warstwie GUI na małym ekranie..I dopasowują swoją pozycję.;-) Widzisz...mówiłem,że coś jest z tą linijka kodu nie tak;-)jednak coś tam mi świtało wujaszku Gnysku ;-) Mam nadzieje,że na różnych monitorach będzie to cały czas w tym samym miejscu pauza zegar i pasek hud...nie tylko na moim monitorze.. Ostatecznie zostawiłem ten kod tylko wywaliłem tą linijkę..więc kod jest w zdarzeniu step w alarm[0](chociaż chyba tam nie powinien teraz być) i w create Jednak jak dam go do step to się wszystko psuje..a w Alarm0 jest idealnie.. ostatecznie kod wygląda tak // create display_set_gui_size(1280, 720) full_screen = -1; // step if (full_screen != window_get_fullscreen()) { full_screen = window_get_fullscreen(); } // alarm0 if (full_screen) { display_set_gui_maximize( 1, 1 ); } else { display_set_gui_maximise( room_width/1280,room_height/720 ); } Sprawdzisz czy tak to powinno wyglądać? ok jeszcze po za tym mam dwa pytania do tego tematu.. 1.Kiedy przechodzę z plansz gameplayu do menu gry to używam tego kodu aby nie psuło mi grafiki gry..bo zawsze tak jest...pewnie ma to wspólnego ze mianą rozdzielczości itp... Mam to włączone i jest ok..jednak mam pytanie,czy ta poniżej linijka kodu powinna być też włączona? bo obecnie jak ją włączam to wtedy psuje mi się całe gui obj_grafika_poprawa create surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise()//tu wyłaczylem tą linikę,bo przy włączonej tej funkcji psuje mi się całe gui w oknie gry obj_grafika_poprawa1 step if(instance_exists(obj_global_controller)) {with(obj_game_controller){instance_destroy()}} surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise() //to samo wyłaczyłem bo włączenie tej funkcji psuje mi gui..na w oknie gry draw_texture_flush() i pytanie drugie 2. Mam w menu opcji przycisk który naciskam i zmienia mi się tryb wyświetlania gry..pełny ekran/okno i wyświetla mi się też informacja czy jest to tryb pełnoekranowy czy okienkowy... Ale jest jeden mankament z tym wyświetlaniem..Otóż kiedy wejdę do menu opcji..i wybiorę pozycję zmiany wyświetlania obrazu i pokaże mi się jak nacisnę ENTER napis na przycisku windowed i zmieni się tryb na okienkowy to jeśli jeszcze raz wejdę do menu opcji to nie wyświetla mi się napis windowed tylko display.. i analogicznie to samo jak teraz nacisnę przycisk ENTER to przełączy mnie na full screen i wyświetli się napis na przycisku full screen,ale jak znów wejdę do menu opcji to zamiast wyświetlać się napis full screen wyświetla mi się napis display.. Wiem,że to ma związek z tym,że w zdarzeniu create mam tak to zdefiniowane i nazwane..jak usunę nazwę display z create i nic nie wstawię to nic mi się nie wyświetla i przycisk jest pusty..więc coś musiałem tam wpisać.. Reasumując.. Chciałbym aby w menu opcji przycisk jak przejdę w tryb okienkowy to wyświetlał mi się napis windowed nawet jak wejdę po raz drugi do tego menu opcji..póki nie przełączę się w tryb pełnoekranowy i analogicznie tak samo przy pełnym ekranie full screen chce żeby mi się w menu opcji wyświetlał nawet jak wrócę do tej opcji póki nie zmienię go na tryb okienkowy windowed. ok tak wygląda zaprogramowany przycisk obj_opcje create options=ds_list_create() options[|0]=("Controlls") options[|1]=("Sound") options[|2]=("Display") options[|3]=("Back") selected=0 gp_up=false gup_down=false gp_left=false gp_right=false //Używane do animacji menu animation_speed=room_speed/4 for(var i=0; i<ds_list_size(options); i++) { animation[i]=0 } step if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey)) { gp_up=0 gp_down=0 } if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey)) { gp_left=0 gp_right=0 } if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) { selected++ if(selected>=ds_list_size(options)) { selected=ds_list_size(options)-1 } gp_up=true } if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) { selected-- if(selected<0) { selected=0 } gp_down=true } if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) { if(selected=0) { room_goto(room_setup_controlls) } else if(selected=1) { room_goto(room_setup_sound) } else if(selected=2) { window_set_fullscreen(!window_get_fullscreen()); options[|2]=("Fullscreen") if (!window_get_fullscreen()) { window_set_size(obj_display_manager.ideal_width, obj_display_manager.ideal_height); options[|2]=("Windowed") } } else if(selected=3) { room_goto(room_main_menu) } } draw draw_set_valign(1) draw_set_halign(1) draw_set_font(font_menu) var line_height=ceil(string_height("M")*1.1) for(var i=0; i<ds_list_size(options); i++) { if(i=selected) { //Wybrana opcja animation[i]=clamp(animation[i]+(1/animation_speed),0,1) } else { animation[i]=clamp(animation[i]-(1/animation_speed),0,1) } var color=merge_colour(c_white,c_red,animation[i]) var s=options[|i] draw_text_transformed_color(x,y+(line_height*i),s,1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1) }
  10. Gnysek.. Uwierz mi że jest takaa sama rozdzielczość w trybie pełnoekranowym i w oknie czyli 1280x720 Sprawdziłem to jak podałeś mi kod draw_text(10,10, string(view_wport[0]) + ", " + string(view_hport[0])); ..i mi wyświetliły się te wartości na ekranie Wspomniałem Ci że wyłączyłem ten jedyny kod który miał te hport w kodzie i na włączonym tamtym kodzie tryb pełnoekranowy pokazywał 1920x1080 a okienkowy 1280x720..ale to wyłączyłem.. Pytasz czemu takie wartości tu zasugerowałem? display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0); bo to jest przecież połowa rozdzielczości w jakiej gra ma podgląd gry. Stąd takie proporcje.. Ja obstawiam..że coś źle jest w tej linijce..może faktycznie musiałbym podać xoffset i yoffset? Nie wartości 0,0 tylko wstawić odpowiednią wartość która w trybie okienkowym przesunie mi na środek pauze i na prawy górny róg zegarek?
  11. Gnysek, Sprawdziłem... Nie mam w żadnym z obiektów kodu który zmienia gdzieś po drodze rozmiary. W menu gry idealnie wszystko wygląda bo tam nie używam view ponieważ menu gry jest w natywnej rozdzielczości 1280x720 a scenerie mają różne wymiary i włączony view gdzie wszędzie ustawiam podgląd gry na 1280x720 Skoro przy użyciu tego poniżej kodu te trzy obiekty pasek HUD zegar i pauza skalują się o te wartości to chyba jest to w porządku prawda? display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0); One mają dobre w trybie okienkowym rozmiary..ale położeniew trybie okienkowym pauzy i zegara jest w złym miejscu.. nie wiem jak mam to bardziej wytłumaczyć:-) jak wstawie takie np wartości display_set_gui_maximise(1280/window_get_width(),0,720/window_get_height(),0); To te trzy obiekty pasek hud zegar i pauza nie zmniejszają się i są takie same jak na pełnym ekranie i w trybie okienkowym..A ich umiejscowienie w trybie pełnoekranowym i okienkowym jest prawidłowe
  12. jak pasek HUD ma pozycję x,y nie wycentrowaną tylko 0,0 to chyba tak myślę jest to wytłumaczenie dlaczego sam pasek HUD jest prawidłowo usytuowany..bo przecież jego pozycja nie zmieni po przełączeniu w tryb okienkowy.. ok już zajrzałem i sprawdzam teraz te wartości..
  13. czyli tak dać argument;-) display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0);
  14. Źle mnie Gnysek zrozumiałeś... wyjaśniam ;-) użycie tych wartości display_set_gui_maximise(720/window_get_width(),360/window_get_height()); powoduje,że w trybie okienkowym pasek hud pauza i zegar mają dobry rozmiar..tylko umiejscowienie pauzy i zegara jest złe.Narysowałem to na tych dwóch obrazkach gdzie są umiejscowione;-) i teraz sztuczka.. jak ustawię te wartości na takie display_set_gui_maximise(1280/window_get_width(),720/window_get_height()); To wtedy pasek HUD,pauza i zegar jest takiej samej wielkości jak na pełnym ekranie jak przełączę się w tryb okienkowy..plusem tego rozwiązania,że wszystko jest wtedy na swoim miejscu pauza i zegar..ale wszystko jest powiększone i rozmiarów takich jak na pełnym ekranie;-) Teraz rozumiesz co mam na myśli?
  15. Już usunąłem display_set_gui_size z tego poprzedniego kodu. Ja mam na środku pauze..jest w zdarzeniu draw GUI... zobacz obj_pauza_controller (wywołuje on obiekt obj_pauza na ekranie) step if keyboard_check_pressed(vk_escape) { if !instance_exists(obj_pauza) { instance_create(0, 0, obj_pauza); } } obj_pauza draw gui draw_set_color(c_fuchsia); draw_set_font(fn_pauza); draw_set_halign(fa_center); draw_set_valign(fa_middle); draw_text( display_get_gui_width()/2, display_get_gui_height()/2-200,"PAUSED"); draw_set_font(fn_pauza); draw_set_valign(fa_middle); draw_set_halign(fa_center); if (interest == "continue") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_red,c_red,c_red,c_red,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_white,c_white,c_white,c_white,1) } else if (interest == "restart") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_red,c_red,c_red,c_red,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_white,c_white,c_white,c_white,1) } else if (interest == "exit") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_red,c_red,c_red,c_red,1) } else if (interest == "main manu") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_red,c_red,c_red,c_red,1) } tak samo zegar patrz obj_timer draw gui var i, notimer_room; notimer_room = false; for (i = 0; i < ds_list_size(global.RT_room_list); ++i) { if (ds_list_find_value(global.RT_room_list, i) == room) { notimer_room = true; break; } } if (notimer_room == false) { draw_set_font(fnt_zegar); draw_set_color(c_white); draw_set_halign(fa_right); draw_set_valign(fa_top); draw_text(display_get_gui_width()+30-string_width(time_string), 0, "CZAS: " + time_string); draw_text(display_get_gui_width()-string_width(fps),y-5,"FPS: " + string(fps)); } Na pełnym ekranie jest wszystko w porządku z pozycja pauzy i zegara... jeśli nie zmniejszymy paska hud i zegara oraz pauzy to pozycja w okienku też wtedy jest w porządku tych rzeczy,ale są one za duże.. jest tak obecnie a powinno być tak To jest dziwna sytuacja..bo skoro na warstwie GUI jest narysowana pauza i zegar gry to powinni dostosować się do trybu okienkowego... Wygląda to tak,że przez zmianę rozmiaru pauzy i zegara podczas zmiany w tryb okienkowy zmienia się ich pozycja... Pasek hud ma swoją stałą pozycję bo jest usytuowany cały czas w lewym górnym rogu bez względu na rozmiar okna gry.. zmniejszając całą warstwę GUI przy trybie okienkowym...zmienia się ich położenie...tylko pasek HUD ma prawidłowe położenie a pauza i zegar już nie...w trybie okienkowym display_set_gui_maximise(720/window_get_width(),360/window_get_height());
  16. Gnysku tak.. Teraz pytanie dlaczego pauza i zegar narysowane na warstwie GUI (draw GUI) przy zmianie na tryb okienkowy nie chcą zmienić swojego położenia dopasowanego do okna gry...? Pomogło wyświetlić wartości na ekranie.. draw_text(10,10, string(view_wport[0]) + ", " + string(view_hport[0])); Przy wyłączonym tym poniżej kodzie ///Wyswietlanie widoku okna gry /* if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); display_set_gui_size(view_wport[0],view_hport[0]); } */ Tryb pełnoekranowy wyświetla informacje 1280x720 a tryb okienkowy wyświetla informacje 1280x720 pauza i zegar gry bez względu na tryb gry czy to pełnoekranowy czy okienkowy ich położenie jest złe nie są na swoim miejscu Pasek HUD jest usytuowany w porządku Natomiast przy włączonym poniżej kodzie ///Wyswietlanie widoku okna gry if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); display_set_gui_size(view_wport[0],view_hport[0]); } Tryb pełnoekranowy wyświetla informacje 1920x1080 a tryb okienkowy wyświetla informacje 1280x720 Tu pauza i zegar w trybie pełnoekranowym są dobrze umieszczone,ale kiedy przełączymy na tryb okienkowy ich położenie jest złe(jest takie same jak w powyższym wcześniejszym przypadku) pasek HUD jest usytuowany w porządku Tylko teraz...jak to naprawić? aby i pauza i zegarek które są narysowane na warstwie GUI tak samo skalowały się jak reszta rzeczy Tak to ostatecznie powinno wyglądać jak na poniższym obrazku
  17. Gnysku, Teraz skaluje się pasek HUD do rozmiaru okna... Jeszcze jedna rzecz...nie chce skalować się pauza a skalowała się i zegar gry...który jest w prawym górnym rogu.. Jak jest na pełnym ekranie to wszystko ładnie wygląda i jest na swoim miejscu..kiedy przełączę na tryb okienkowy pasek HUD też się ładnie już skaluje,ale nie skaluje się pauza i zegar. Odkryłem tą zależność..jak włączę ten kod poniżej to zegar i pauza skalują się,ale wtedy pasek HUD nie skaluje się.... Jak to naprawić? Pauza i zegar też jest rysowany na warstwie GUI obj_game_controller begin step ///Wyswietlanie widoku okna gry if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); display_set_gui_size(view_wport[0],view_hport[0]); } edit tak to wygląda jak na obrazku
  18. Wiesz..dokumentacja to pojęcie szeroko rozumiane:-) Nie przeczytałem książki gms...ale przeczytałem krótki opis tej funkcji... Z której zrozumiałem jak zrozumiałem. Gnysku, Czy pod obsługę innych monitorów niż mój muszę zmienić te wartości z 1,1 na dzielenie przez display_get_width() i ..._height() .?
  19. I dupka;-) teraz w trybie okienkowym są dobre proporcje paska hud,a w trybie pełny ekran pasek jest bardzo malutki..jeszcze mniejszy niż w trybie okienkowym.. create display_set_gui_maximize( 1, 1 ); draw gui display_set_gui_maximize( 720/window_get_width(), 360/window_get_height() ); Może muszą być większe te wartości niż 1?
  20. Łobuz z Ciebie;-) Dobra...pytam,bo nie używałem tej funkcji wcześniej... a napisałeś ją dwukrotnie z innymi wartościami stąd moje pytanie;-)
  21. Fakt...masz rację nie podstawiłem sobie cyfry pod dzielenie. czy przypadkiem tu nie ma być display_set_gui_size(1, 1) zamiast display_set_gui_maximize( 1, 1 ); ?
  22. Zobrazowałem to na poniższym obrazku jak to wygląda...wszystko poza paskiem HUD się skaluje do rozmiaru okna gry. Pełny ekran full screen view 1280x720 i tryb okienkowy view 1280x720 Edit.. Jeśli użyje kodu który mi podałeś... to sytuacja jest wtedy taka: w oknie gry pasek jest takiej samej wielkości jak przy pełnym ekranie full screen,a na pełnym ekranie full screen pasek jest zmniejszony i pasowałby do okna gry.. obj_display create display_set_gui_size(1280, 720) draw GUI display_set_gui_maximize( 1280/window_get_width(), 720/window_get_height() ); Pomyślałem sobie..zmienię wartości.. więc zrobiłem tak w create zostało jak jest..a w draw gui zmieniłem wartości na takie.. display_set_gui_maximize( 720/window_get_width(), 360/window_get_height() ); Teraz w oknie gry pasek skaluje się prawidłowo,ale na pełnym ekranie jest jeszcze mniejszy...czyli i te rozwiązanie nie jest dobre..
  23. te rozwiązanie nie działa.. ale odkryłem jedną zależność.. na scenerii tam gdzie się rozgrywa akcja gry i jest bohater to mam dwa obiekty które kontrolują grę... jeden z tych obiektów miał włączoną dodatkową aplication_surface..wyłączyłem to..i teraz widać idealnie jak skaluje pasek HUD jak gra przechodzi w tryb okienkowy... Ale jest jedno ale... kod do zmiany trybu z full screen na okienkowy umieściłem chwilowo w step jednego z tych kontrolerów które wyłącznie znajdują się na scenerii gry(nie w menu głównym gry) Jak ten sam kod umieszczę w menu głównym gry.to nie skaluje mi paska HUD... Teraz mam zagadkę jak to naprawić..jest to dość uciążliwe zjawisko...bo bez sensu jak będę zmieniał tryb pełno ekranowy i okienkowy w samej rozgrywce..Od tego mam specjalne miejsce w menu gry.. Przejrzałem już czy nie mam gdzieś w menu głównym i opcji jakiegoś kodu z aplication_surface i nic już nie ma... to jest ten kod.... jak umieszczę go w zdarzeniu step np w obiekcie obj_game_controller który jest obiektem trwałym w nim jest w draw GUI pasek HUD i on znajduje się wszędzie ten obiekt po za planszami menu gry game over i highscore...czyli tam gdzie jest gracz..To tutaj skalowanie idealnie działa if (keyboard_check_pressed(ord("F"))) { window_set_fullscreen(!window_get_fullscreen()); if (!window_get_fullscreen()) { window_set_size(obj_display_manager.ideal_width, obj_display_manager.ideal_height); } } natomiast ten sam kod jak mam w menu gry opcji(tam gdzie nie ma obj_game_controller) to nie skaluje mi paska HUD room_menu obj_opcje step if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) { if(selected=0) { room_goto(rm_controls_setup) } else if(selected=1) { room_goto(rm_sound_setup) } else if(selected=2) { window_set_fullscreen(!window_get_fullscreen()); options[|2]=("Fullscreen"); if (!window_get_fullscreen()) { window_set_size(obj_display_manager.ideal_width, obj_display_manager.ideal_height); options[|2]=("Windowed"); } } else if(selected=3) { room_goto(roo_menu) } }
  24. No właśnie o to chodzi,że po za paskiem HUD wszystko jest dobrze skalowane do rozmiaru okna.. Gra jest ustawiona na pełnym ekranie na 1280x720...i wszystkie mam tak ustawione pokoje na taką rozdzielczość Tu jest tylko problem z paskiem HUD i spritami które są osadzone na nim...kiedy przełączę się z ekranu (full screen 1280x720) na ekran okienkowy..to pasek HUD ze spritami umieszczonymi na nim nie skalują się do rozmiaru okna..tylko nadal mają pierwotny rozmiar.. draw GUI /// Wyswietlamy HUD gracza draw_set_color(c_white); draw_sprite(spr_mniejszy_hud,1,50,64); var __guiW = display_get_gui_width(), __guiH = display_get_gui_height(); //punkty czyli score wysrodkowalem to na HUD draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_sprite(spr_score,1,310,30); draw_text(310,75,"$"+string(global.pScore)); // Rozmieszenie monet draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_sprite(spr_coins,1,400,30); draw_text(400, 75, string(" " + string(global.coins))); //HP HUD if instance_exists(par_player) { //hpHUD = lerp(hpHUD,par_player.hp,.5); hpHUD=global.hp; maxHpHUD = par_player.maxHp; //HUD dopalaczy with obj_player { var _offset; _offset = 0; draw_set_font(fnt_pwrup); draw_set_valign(fa_bottom); draw_set_halign(fa_center); draw_set_color(c_white); draw_texture_flush(); if pwrupSpd > 0 { draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed))); _offset++; } if pwrupStr > 0 { draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed))); _offset++; } if pwrupJmp > 0 { draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed))); _offset++; } } } else { hpHUD = lerp(hpHUD,0,.5); } //HUD zycia draw_sprite_part(spr_hp_bar,1,1,0,180/maxHpHUD*hpHUD,130,90,14); draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_text(70, 74, string("x" + string(global.life))); //rozmieszczenie wskaznika zyc draw_sprite(spr_glowa,1,40,1);
×
×
  • Dodaj nową pozycję...