
ereg
Użytkownicy-
Postów
253 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez ereg
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 11
-
wazne jest uzycie liczenia koloru. dlatego doteraz niebylo co pisac :) Shockah podal 1. przyklad uzycia. w tym przypadku mozna by zapisiwac kazdy rysowany kolor do ds_grid. mozna by uzyc naprz funkcji ds_grid_get_sum innych przykladow niema, to niema co spelukowac :) bo mozliwosci uzycia zaduzo a czasu zamalo BTW: sam bylem ciekawy czy mozna jakos uzyc shaderow, ale narazie nikt fundowany nic nepowiedzal
-
calkiem duzo pytano/problemow na jednej kupie :) podziel a panuj! powinenes sie koncentrowac na kazdy problem osobno: 1,a co zrobić jeżeli mam do zbadania 18 takich kwadratów o różnych współrzędnych ... dla każdego z nich tworzyć nowe ds._list? . tak, kazdy region powinenn miec wlasny ds_list, dlatego script zwraca id ds_listu 2,problem jest tez ze te kwadraty stoją obok siebie i nie umiem sobie poradzić z tym żeby wykryło jakie piłki przechodzą w danym momencie przez kwadrat. id kazdej pilki jest w ds_listu, na tobie jest zrobic z niego uzytek 3, Jeżeli przechodzi jedna jest o.k. Kwadrat zmienia kolor pola ale w momencie gdy lecą dwie to kwadrat przejmuje kolor tylko pierwszej piłki całkowicie ignorując drugą. tak jakby collision_rectangle działała tylko z jednym obiektem gdy już znajduje się w polu kwadratu współrzędnych x y i x2 y2. w ds_list masz id wszystkich pilek. naprz. 1xred, 2xblue, 5xgreen jaki bedzie miec kwadrat kolor zalezy na tym jak TY powiesz. jezeli v liczba ma decydowac, to bezdie green. ale tez mozes powiedziec ze decyduje ostatnia pilka ktora wchodzi na kwadrat, mozesz robic mix colorow... lub zupelnie inaczej. 4, No i jest jeszcze problem jeżeli leci druga piłka tego samego koloru ( czyli o tej samej nazwie obiektu) także nie wykrywa pojawienie się jej. script nedetekuje pilke w region, ale powoduje ze kazda pilka sprawdza jesli jest w regionu(sprawdza sama siebie jesli koliduje z regionem) a jesli tak to zapisze swe id do ds_listu w regionu( ja vyzej nazwalem go o_ctrl)
-
niejest tak zle. :) kazdy obj poprostu zapisuje swe id do ds_list, ktory jest zwracany jako wynik funkcji.
-
moze to pomoze i tak jest tam dosyc interesujocych rzeczy :)
-
dzisaj pomyslalem ze chyba przydal by sie przyklad dla 2, konkretnie dla ds_grid staralem sie opisac o co chodzi, moze bedzie zrozumiale :)
-
regulacja prędkości skrętu oraz optymalizacja kodu
ereg odpowiedział(a) na tomasz_76 temat w Pytania początkujących
mam nadzieje ze polapalem o co ci chodzi :) 1, chyba mozna uzyc tez path z roznymi szybkoscami. muszis definowac patch. objekty tylkko potem wedlod niego sie ruszajo dano szybkoco, kazdy tak samo. 2, iterpolacja, potrzebuje umiec wyliczyc kazdy punkt trasy pilky w dowolnej chvili wtedy ustalasz wedlod szybkosci ile % z trasy juz pilka przesla i liczysz odpowiedno pozicje jest to podobne do 1,, ale prace odwala za ciebie GM 3, mozna tez uzyc 2, tak ze raz wyliczysz sobie calo trase(jesli sie niezmienia), nastepnie umiesczas do datowej structury i uzywazs 2, na pobieranie konkretnej wspolrzendnej z datowej structury wedlog aktualnego postepu w % pilky na trasie -
"_string_zadany_w_input" jest twa zmienna, ktora przechowuje string tobo napisany string do boxu naprzyklad: GML _string_szukany="hello"; _string_zadany_w_input=get_string("napisz hello","tu"); // tu dasz swoj sposob pozyskania napisanego stringu if (_string_zadany_w_input == _string_szukany) && (keyboard_check_pressed(vk_enter)) ) { /* wykonaj akcje*/ show_message( 'napisalesz "hello" ' ); };
-
Prosty raycaster do wykrywania współrzędnych obiektów.
ereg odpowiedział(a) na TrooP temat w Pytania zaawansowanych
jesli kostky so naprz 32pix, ale ptak leci y+=1(lub cos tam), wystarzcy ze bezdzie wybrana 1 kostka z dwoch? w chwili kiedy ptak przekracza granice miedzy kostkami, jest wiecej mozliwych zadan co ma sie robic :) krajina kostkowa jest chyba neskonczona i przesuwa sie na przeciw ptakowi, niemyle sie? ogolnie to chyba uzylbym ds_ structury do przechowania pozycji top kostek i porownywal o_ptak.x z pozycjo w ds_ structurze mozna by tez uzyc testow jak: - position_meeting(x,y,obj) albo - collision_point(x,y,obj,prec,notme) -
jesli masz problem odczytac kod, napewno minimum, jest zapoznanie sie z zmiennymi, co to jest object, co instancja, jak ido eventy v GM za sobo i jakie so miedzy eventami roznice. przyda sie zawsze :) potem mozesz napisac sobie algoritm na papier. maly przyklad: 1, narysuj graf. tabliczke 2, dodaj/zapisz zmienne do mej datowej structury( file, array, lub jakis rodzaj ds_) 3, na graf. tablice napis cale score zebrane z datowej structury. 4, czekaj na akcje "powrot do menu" potem probojesz pomyslec jak kazdy punkt osobno spelnic a poznajesz co wsystko nieznasz, ale tu juz mozes pytac o konkretne rzeczy nauczysz sie bardzo duzo a s swym tempei a nie wszystko naraz, to moze byc klopotliwe a duzo ludzi potem mysli ze programowanie jest trudne. a niejest, bo nawet ja programuje ;-) do tego polecam od razu uczyc sie v gml, jesli juz tak nierobisz :thumbsup:
-
przepraszam :) 1, kdzie masz definowane ? - length - text 2a, stwierdzam: akcja sie bedzie dziac(po wcisnieciu ENTER) 2b, tlumacze dlaczego pytam v punktu 1, : ale z tego co pokazujesz skoczy sie bledem 3a, chyba JA zle przeczytalem twe pytanie. jesli chodzilo ci by akcja byla wykonana po napisaniu unikalnego slowa to mozesz porownywac stringi. GML if (_string_zadany_w_input == _string_szukany) && (keyboard_check_pressed(vk_enter)) ) { /* wykonaj akcje*/ }; 3b, ten sam sposob jako v 3a, ale inne wykonanie. szuka dokladnie ten sam string. naprz jesli "hello world" jest w "hello" wynik bedzie false GML if (string_pos(_string_zadany_w_input, _string_szukany) && (keyboard_check_pressed(vk_enter)) ) { /* wykonaj akcje*/ }; // string_pos wraca 0/false kdy nic nieznalazl</span> 3c, tak jak v 3b, ale tym razem szuka jesli string jest wogole w zadanym stringu. naprz jesli "hello" jest w "hello world" wynik bedzie true GML if (string_pos( _string_szukany, _string_zadany_w_input) && (keyboard_check_pressed(vk_enter)) ) { /* wykonaj akcje*/ }; // string_pos wraca 0/false kdy nic nieznalazl</span>
-
bardzo mi sie podoba. :thumbsup: dobra robota! juz niebedzie mi smutno po atomic bomberman :)
-
kdzie masz definowane: length text akcja sie bedzie dziac(po wcisnieciu ENTER), ale z tego co pokazujesz skoczy sie bledem :)
-
Losowy wygenerowany przedmiot nie pojawia się ponownie
ereg odpowiedział(a) na odex temat w Pytania początkujących
mozesz sprubowac stwierdzic czy to naprawde tak robi, dodaniem testu na liczbe obj_statek jesli jest po wylosowaniu przypadkowo stworzony drugi taki :) -
1, limit czasu dokladnie nieznam. bedzie to duzo-batjowa liczba :) coz powinno wystarczycz na weilu dni 4h= tylko 14,4 M milisec po napelnienu wszystkych bajtow napewno dojdzie do liczenia od 0. coz doprowadzi do 1 blednego testu time co x-dni jesli masz w planu dokonac kontroli latu na Marsa za pomoco PC i uzyc current_time, to poprostu prowadz dodatkowo kontrole za pomoco innych czasowych funkcji 2, BTW: przypadkiem wpadlem na GM:S funkcje get_timer() This function returns the time that your game has been running on the chosen platform in microseconds (there are 1 million microseconds per second). 3, ostatecznie nalezy wybor algoritmow tylko do ciebie :)
-
current_time liczy czas po milisec. w ostatnich postach pare razy o nim pisalem :)
-
sproboj realworld cursor editor na startu => tworz => kurzor ze zdjecia i mozes wczytac sade png a fajnie dorobic ani w koncu => zapis uklada jako ani testowalem :) przyklad
-
na 99% niemozna, chyba bys zapisywal zmienno do file, ale to u gm:s tez niejest zawsze tak proste :) powinenes byc absolutnie pewny przy wywolaniu scriptu, ze zmienna jest, i ma wymagano wartosc. trudniejsze, ale nieniemozliwe.
-
zeby niemrugaly sprite uzyj v objektu image_speed=0
-
Dużo obiektów, każdy ma inne parametry, jak je wyświetlić?
ereg odpowiedział(a) na zolty77 temat w Pytania początkujących
to do tej pory niewiedzalem :) i tak wzsystkie przyklady pisze w GM8 :thumbsup: -
Dużo obiektów, każdy ma inne parametry, jak je wyświetlić?
ereg odpowiedział(a) na zolty77 temat w Pytania początkujących
tylko jesli to niedotyczy GM:S :) dla mnie jest wazniejsze, ze with robi mniej przejrzsysty kod z samej swej natury. -
Dużo obiektów, każdy ma inne parametry, jak je wyświetlić?
ereg odpowiedział(a) na zolty77 temat w Pytania początkujących
jednoznacnie Draw_Panel._idn=0; with uzywa sie tylko w wybranych przypadkach, kiedy dany objekt ma cos zrobic sam , ale tylko na powel objektu wydajocego komende with :) troche to brzmi dziwnie, ale jak mozna to nieuzywaj zbytnio with zatem jesli panel ma pokazac random wybrany object to wystarczy kiedy panel zna id objektu ktory ma wyswietlic a dane sam sobie bierze i tego obejktu zaznaczanie objektow napis do unikatnego objektu, moze byc nawet o_panel i w nim kieroj cale zaznaczenie o_panel mial by prechowac tez lewy-gorny a prawy-dolny rog zaznacenia, by potem o_balon mogly same robic testy jesli so wybrane. aha niewidze powodu bys robil dva testy na colision_rectangle +colision_point. point jest tez rectangle o rozmiarach w=0 h=0 :) ogolnie mozna ominoc caly collision_ -
Dużo obiektów, każdy ma inne parametry, jak je wyświetlić?
ereg odpowiedział(a) na zolty77 temat w Pytania początkujących
moze to jest odpowiedni czas, by przeprogramowac zaznaczanie objektow? :) (bez with) -
tu jest mozes popartzec jak jest zrobione tworzenie bomb przez current_time a nisczenie bomb przez alarm :) GML Information about object: o_kontrola Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: COMMENT: wytwarza bomby w czaszowych odstepach execute code: _punkty = 0; // zeruje punkty _max_liczba_bomb = 50; // ile moza byc bomb w roomu naraz _czas1 = 5; // podaje ile czasu jest do stworzenia bomby (w sec) _czas2 = 10; _test_czas1 = current_time + _czas1*1000; // ustawi pierwszy czas do odliczania wedlog current_time(na milisec) _test_czas2 = current_time + _czas2*1000; Step Event: execute code: if (_test_czas1<current_time) { // test na czas bomby 1 instance_create(irandom(room_width), irandom(room_height), o_bomba_red); _test_czas1 = current_time + _czas1*1000; // USTAWI NOWY CZAS DO KONTROLY W TESTU }; if (_test_czas2<current_time) { // test na czas bomby 2 instance_create(irandom(room_width), irandom(room_height), o_bomba_blue); _test_czas2 = current_time + _czas2*1000; }; Draw Event: execute code: draw_text(10,10, "punkty: "+string(_punkty) ); // pozakuje ilosc puktow ______________________________________________________ Information about object: o_bomba_blue Sprite: sprite1 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _czas_do_explozji= 15; // podaj czas v sec alarm[0]=_czas_do_explozji * room_speed; // przelici czas 5 na rzeczywiste sec Alarm Event for alarm 0: execute code: o_kontrola._punkty-=15; // bomba exploduje i tracisz score instance_destroy(); // bomba jest znisczona mozna tez dodac efekty graficnze, dzwiekowe Mouse Event for Left Released: execute code: o_kontrola._punkty+=50; // deaktywowana bomba dostajes punkty instance_destroy(); // nisczy bombe mozna dodac efekt/dzwiek rozbrojenia bomby ______________________________________________________ Information about object: o_bomba_red Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _czas_do_explozji= 15; // podaj czas v sec alarm[0]=_czas_do_explozji * room_speed; // przelici czas 5 na rzeczywiste sec Alarm Event for alarm 0: execute code: o_kontrola._punkty-=15; // bomba exploduje i tracisz score instance_destroy(); // bomba jest znisczona mozna tez dodac efekty graficnze, dzwiekowe Mouse Event for Left Released: execute code: o_kontrola._punkty+=50; // deaktywowana bomba dostajes punkty instance_destroy() // nisczy bombe mozna dodac efekt/dzwiek rozbrojenia bomby ______________________________________________________
-
Dużo obiektów, każdy ma inne parametry, jak je wyświetlić?
ereg odpowiedział(a) na zolty77 temat w Pytania początkujących
chodzilo o cos takiego: GML Information about object: o_panel Sprite: Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: Create Event: execute code: _idn=0; Mouse Event for Glob Right Released: execute code: // kasuje id z o_panel _idn=0; Draw Event: execute code: if(_idn){ draw_rectangle(5,5,room_width-5, 50, 1); draw_text(10,10,"X="+string(_idn.x)+" score="+string(_idn.score)+" idn="+string(_idn)); draw_text(10,25,"Y="+string(_idn.y)+" direction="+string(_idn.direction)); }; draw_text(room_width*.5, 10, "LBM na objektu oznacza go dla panelu"); draw_text(room_width*.5, 25, "RMB kdziekolwiek kasuje panel"); ______________________________________________________ Information about object: o_balon Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: Create Event: execute code: x=irandom_range(32, room_width-32); y=irandom_range(96, room_height-32); // niewazne zmienna dla pokazu _hp=irandom(20)*10; direction=irandom(360); Mouse Event for Left Released: execute code: // przesyla id do o_panel o_panel._idn=id; ______________________________________________________ -
1, timer 1a, liczenie czasu ustawiasz na 0 i czas/score sie nieliczy by czas sie nieliczyl przy startu gry, wystarczy ustawic 1a takze w eventu create waznego objektu, ktory kontroluje czas 1b, w chwili kolizji obj_A s obj_B zaczynasz liczyc czas - alarm chyba niejest najlepszy, bo tylko wloczy liczenie czasu. niepodam sposobu liczenia dla alarmu. - wlasnym timerem( znajdz w help current_time, lub tutaj pisalem) so 2 mozliwosci timera -- timerA zapisze czas zderzenia i dalej nic nierobi. fajnie -- timerB aktiwuje liczenie czasu i co step liczy ilosc klatek. niebardzo fajne ale da sie 1c, keidy liczysz czas a nastopi nowa kolizja obj_A s obj_B - alarm wyliczi czas ktory przeszedl od 1b,alarm - timerA zapisze czas drugiego zderzenia i obliczy ile czasu przeslo - timerB wedlog ilosci klatek wyliczi ile czasu moglo przejsc (cos w rodzaju _timerB_calkowy_czas / room_speed) 1d, albo idzies do 1a albo 1B. nieznam dokladnie twych zamiarow co ma sie stac po drugim zderzeniu 2, score GM ma swo zmienno score, ale polecam uzywac wlasne zmienna a rysowanie wynikow i informacji przez draw event teraz wystarczy poczytac sobie, pomyslec, sprubowac a potem pytac o konkrety :)
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 11