
Kartofelek
Użytkownicy-
Postów
40 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Kartofelek
-
Z tym parent szczerze nie pomyslalem ^^ A co jakbym chcial by czesc obiektow dziedziczyla jakies wlasciwosci, a czesc jakies inne? Da sie by parent byl dzieckiem innego parent?
-
Ale powiedzmy ze obiektow jest 100 roznych. Moze obiekty ktore moga oberwac trzymac w tablicy? A potem petla po nich, ale to by bylo kiepskie wydajnosciowo chyba Wiem ze pytanie troche mącące, ale wole wszystko sobie przemyśleć wcześniej, bo w trakcie tworzenia będzie prawdopodobnie za późno by zmienić główną mechanikę ^^
-
Witam ponownie ^^ Poprzednia gra z tematu https://forum.gmclan.org/index.php?showtopic=13237 narazie została wstrzymana ^^ Zaczalem wiec tworzyc nowa gre Bedzie to cos ala Alien Breed ale sterowanie myszka (+ chce zrobic kilka postaci jak w Cannon Fodder). Moje pytanie ktore mi sie nasuwa brzmi tak: Nie chce by dzialka strzelaly pociskami. Kto widzial alien breeda to wie, ze pierwszy karabinek nie wypluwał pociskow tylko ogien z lufy. Po takim strzale pojawiały się "odpryski" na scianie, ewentualnie na alienie ^^ Myslalem o wykorzystaniu colision_line, wykrywaniu instancji potworkow itp, ale nie wiem czy przypadkiem nie utrudniam sobie zycia, bo przeciez beda jeszcze jakies beczki itp. Moze szybkie pociski z niewidzialnoscia? Ale natrafie wtedy na problem z tematu gdzie "szybkosc byla 60 cos i gostek przenikal przez sciane" (podobny znalazlem tutaj https://forum.gmclan.org/index.php?showtopi...=colision_line). Napisac na sile to napisze, ale przy wiekszej roznorodnosci obiektow pisanie kodu "if obiekt == jakis" to bylo by morderstwo dla moich palcow ^^
-
Przepraszam, że się wtrącę, ale myślałem, że jestem na forum, na którym pisze się w ojczystym języku... Ja rozumiem, że niektórzy mają lenia tłumaczonego Dysleksją, ale bez przesady.
-
Dzieki wielkie. Chociaz z tym obrotem to bardzo dziecinna sprawa! Zapomnialem tylko jednego ^^ W tamtym poscie dzialko mialo sie obracac 360 stopniowo, a przeciez u mnie kat obrotu to gora z 45-60 stopni ( i to zawyrzajac). Wiec nawet bez zadnej logiki moge sobie to wyliczac ^^ Wczoraj za to bawilem sie view i zmienilem kilka rzeczy: Plansza bedzie dluzsza (tak na oko z 1000), a view z 500. Strzalkami lewo prawo mozna sie po niej przemieszczac Mam juz rakiety - ktore po spacji strzelaja w niebo, aby po kilku sekundach spasc z nieba na ziemie - obliczane randomowo y uderzenia + x (ale x powinien miescic sie w view) ^^ - dziala. Tylko teraz mam problem z odrzucaniem ludzikow ^^ Jak to zrobic? Na razie zrobilem tak: jest sobie dzialko AA ^^. Stzela rakieta w gore (tworzy nowy obiekt rakieta). Rakieta ma alarm ktory po n sekundach ustawia ja na y=-30 i random x, i potem wali nia w ziemie. Jak dojdzie do y_impact (czyli uderzy w ziemie) to instance_destroy + tworzy obiekt wybuch, ktory ma zdarzenie - "on end animation" - instance_destroy. I tutaj sie robi problem. Moge skorzystac z eventa collision (bo jeszcze nie opanowalem w kodzie obslugi colision) i zmieniac speed + gravity itp dla obiektu other, ale wczoraj mi to nie wyszlo ^^ Myslalem ze moze by zastosowac technike ze skoku z platformowek? Plus problem jest taki, ze nie potrafie do konca obsluzyc obszaru dzialania wybuchu... Zalozenie jest takie: jak wybuch to randomowo wyrzuca w gore, po czym ludek spada martwy na ziemie (eventualnie traci sporo zycia). Wlasnie mi przyszlo do glowy, ze moze by obliczac tak (dla wybuchu): if (x > other.x) { other.direction = 30 + random(90) } else { other.direction = 180 - random(90) } Plus podobne dla y, ale to wciaz nie obsluzy tego obszaru. Pewnie bede musial dodatkowo obsluzyc grawitacje w obiekcie ludzika. Problem jest taki, ze ta plansza po ktorej ida ludki jest "wielowymiarowa" czyli nie ma jednej podlogi w pozycji y, ale kazdy ludzik ma swoja "podloge po ktorej idzie", wiec dodatkowe obliczenia sie robia + przeciez ludzik po wybuchu nie musi upasc na ziemie w bok (nie zmieniajac pozycji podlogi), ale tez moze go wyrzucic pod katem - czyli wtedy jego "y_podloga" sie nieco zmieni Przygotowalem na szybko obrazek pogladowy:
-
Nie. 1)Pierwszy z instancjami nie rozwiazany. Hmm. Srednio rozwiazany. A) zastosowanie nowego obiektu - martwego ludzika. Calkiem mile, chociaz mi sie nie podoba B) wylaczenie automatycznego celowania. Dzialka strzelaja "w kursor". Ale to psuje postac gry. Dzialka maja byc automatyczne, ty tylko ustawiasz im opcje itp 2) Wykrywanie punktu "gdzie strzelac". Nie wykrylem. Pozostane na chaotycznym strzelaniu... 3) Wolny obrót - nie zaimplementowałem. Popróbuje... Wczoraj walczylem, ale zawiodlem ^^ Narazie wciaz trenuje, ale coraz lepszy obraz calosci mi sie nasuwa. Dzialka beda mialy swoje wlasciwosci. Celnosc, liczba naboi, szybkostrzelnosc, zasieg i sila_ataku, czas ladowania. Celnosc bedzie wyliczana jakos z iloczynu celnosci "strzelca" (ktory bedzie obok dzialka - obslugiwal je), tak samo czas ladowania. Liczba naboi - to zaleznie od upgradeów, zasieg i sila tez ^^ Strzelcy tez beda mieli wlasciwosci: exp, celnosc, szybkosc przeladowywania dzialka, zycie?, strzaly krytyczne Jeszcze musze wymyslec jak zdobywac kase. Pomyslalem sobie ze mozna by zrobic tak, ze z bunkra wysyla sie ludzika na pole bitwy, ktory idzie point_direction + wykrywanie drogi (patrzylem na przyklady) do lezacych zwlok. Jak dojdzie to je bedzie przeszukiwal i w razie testu random by je "okradal" ^^. Oczywiscie trzeba by chronic tego ludzika, bo zombiaki jak by widzialy takiego ludzika, to by sie point_direction w niego ^^ Ze szczegolami sobie poradze. najwyzej pojde na kompromisy. Tylko pewnie bede musial sie pobawic z globalnymi zmiennymi itp. bo duzo zaleznosci sie szykuje. Myslalem sobie ze moze by tak kazdemu obiektowi w grze dac szybkosc jakas (zmienna). A jak by np byl koniec planszy to wtedy by sie pojawialo jakies podsumowanie czy cos, a w tym czasie speed = 0 (wtedy wszystko co sie rusza to by stawalo). Np ludek z wysokim LV by mial szybkosc 8 itp. Przy takim zalozeniu latwo by mi bylo robic jakies motion blure dla poszczegolnych obiektow (a nie jak dla calosci za pomoca room_speed)..
-
Jeżeli wcześniej np. w create zmieniłeś image_speed... Zmienilem na 0.8 ^^ Kolejne pytanie: Slyszalem juz o parentach. Moje pytanie jest takie: Jaka jest roznica miedzy: - Stworzniem nowej instacji z eventem create, w ktorym jest kod ustawiajacy wszystko co trzeba - Skorzystaniem z parenta, ktory ma juz poustawiane. Dziedziczenie ok. A reszta? A moze wydajnosciowo? Koniec pytan, bo psuje przez to forum. Sorki z gory. Kolejne pytania raczej na nowych watkach. Pozdrawiam i dzieki za pomoc
-
W sumie co racja to racja. Jezeli beda 2 trupki obok siebie i zadnego innego ludka miedzy nimi to petla w nieskonczonosc. Lipny ten moj kod. Bede musial pokombinowac. Zastanawia mnie jednak wykorzystanie tego drugiego - martwego ludka. Niby drugi obiekt, ale zoraz bardziej mi sie rozrasta ten kod ludka, bo po smierci musi miec nowe images, nowe zdarzenia (zanikanie ciala po ilus tam stepach), reakcje na wybuch - przeciez moze granat w poblizu wybuchnac wiec musi wyrzucic cialo w gore itp. Swoja droga - kolejne pytania 1) Mam 5 obrazkowego sprita. Jezeli ludek idzie to nie powinien wyswietlac klatek z konca - czyli 4,5 itp. wiec if (image_index==3) image_index = 0; tylko ze to nie dziala dziala natomiast if (image_index>=3) image_index = 0; sprawdzalem piszac mini tekst przy ludku - image_index liczony jest z przecinkiem? tak mi wyswietlalo. Ale skoro ta, to niby nie osiaga wartosci 3??? Hmm. Chyba ze by dac round ^^, ale to juz jakies maniaczne sie staje. Powyzszy kod jednak chyba nie wyswietla image_index[3], wiec gubie jednego image. 6) moze jest lepsza metoda na obsluge spritow? Kilka spritow i w razie czego podmiana?
-
Witam ponownie ^^ Kod do { _l = instance_nearest( x, y, Ludek ); } until( _l.zycie > 0 ); Nie za bardzo dziala. Próbowałem to wykonać przy do {} until i z zastosowaniem klauzuli while () {} ale wciaz zacina program. calosc dzialala mniej wiecej tak: a = instance_nearest(x,y,ludek); //x i y to polozenie dzialka while (a.zycie<=0) { a = instance_nearest(a.x, a.y, ludek); } lub a = instance_nearest(x,y,ludek); //x i y to polozenie dzialka while (a.zycie<=0) { b = a; a = instance_nearest(b.x, b.y, ludek); } ale jakos wciaz zawiesza. Co do kodu HuderLorda - calkiem fajny, ale nie do konca go rozumiem. Chyba nie o to chodzilo. No i jeszcze raz - czy moze ktos potrafi znalezc pozycje w ktora trzeba celowac by trafic idacego ludzika? Wektory u mnie leza ^^ Ps. Patrzylem kod do powolnego obracania, ale to co mi sie znalazlo nie jest do konca dzialajace...
-
if (cc==nrstENEMY.id... bardzo fajny kod ^^ Nawet nie wiedziałem o takich funkcjach jak circle...
-
Ciężko to ludziom wytłumaczyć ^^ Grałeś kiedyś w jakiś symulator kosmiczny? Jak leciał wrogi myśliwiec to Hud pokazywał ci miejsce gdzie masz strzelać by trafić. Właśnie takie miejsce chcę obliczyć. Więc: Mam karabinek w pozcji x i y, który strzela pociskiem w ludka, który biegnie z przeciwnej strony ekranu. Nie moge skorzystać bezpośrednio z derection_point, bo zanim pocisk doleci, to ludek juz bedzie gdzies indziej -w koncu on biegnie. Musze strzelic z wyprzedzeniem ^^ Jak pisalem - sprawa nie jest bardzo wazna bo i tak wiekszosc dzialek bedzie strzelala chaotycznie, ale przyda mi sie tez strzelanie "snajperskie" ^^ Mysle ze lepiej by bylo do { _l = instance_nearest( x, y, Ludek ); } until( _l.zycie > 0 ); Chociaz jak mowie - nie rozwiazuje to problemu - bo ludzik wcale nie musi byc "nearest". Moze - tutaj teoretyzuje - zrobic petle po ludkach, pobierajac za kazdym razem nearest. Jak ten nearest jest martwy, to jego id wrzucic do tablicy. Jak za kolejnym obiegiem jego id jest w tablicy to nie bierzemy pod uwage. Itp...
-
Bedę aktualizował i odpowiadał pytania: w step umieściłem odpalanie alarmu który kasował instancję za 10 stepów, ale że nie było warunku sprawdzającego, to w każdym stepie ustawiał ten alarm na 10 - przez to instancja nie była niszczona (zwykla glupia logika ^^)
-
Tworzę swoją pierwszą gierkę. Przynajmniej mam w przyszłości zamiar, bo narazie tylko testujący program, by rozwiązać niektóre problemy. Więc do rzeczy: Załączam tutaj link do pliku, który zawiera gierkę: www.doman.art.pl/gm/simple.gmk Opis problemów jest w informacjach gry, ale oczywiście tutaj też zamieszczam. Jeżeli któreś pytanie jest niejasne, najlepiej włączyć ową grę i zobaczyć o co chodzi. Problemy: - Pocisk po tym jak pokaże "rykoszet" (image_index[1]) nie niszczy sie - nie odpala sie alarm[0] ??. Alarm ustawiam w warunkach eventu steep, a w alarmie jest instance_destroy. I nie dziala ?? - jak wykryc wektor w ktory ma celowac dzialko? - dla dzialek snajperow ^^. Dla tych co są teraz jest niby ok, bo mają "walić" chaotycznie, ale napewno mi się przyda strzelanie z poprawką na ruch. Zastanawiałem się nad uwzględnianiem szybkości obiektu ludka itp, ale jakoś nie do końca mogę to wymyśleć (leń!) - obrot dzialka wolniejszy - probowalem tak, ze pobieralem point_direction ludka i wtedy sprawdzalem czy direction dzialka jest mniejszy czy wiekszy i w zaleznosci od tego odpalalem alarm[2] ktory dodawal lub odejmowal do direction dzialka - narazie nie wyszlo - dzialka były nieruchome... ;/ Teraz jest ustawione na point_direction, ale za szybko się obracają i wygląda to głupawo. - dzialko celuje w najblizszego ludzika. Jezeli ludzik zginie to dzialko w niego nie powinno celowac. Próbowałem tak: L = instance_nearest(x,y,ludek); if (L.zycie==0) L = instance_nearest(L.x,L.y, ludek); Tylko ze to wylapie tylko pierwszego najblizszego (a jezeli beda 2 trupy obok siebie to juz nie wylapie). Z repeat i while mi nie poszlo, bo jestem amator ^^, zreszta ta metoda jest kiepska, bo ma lapac najblizszego ludka od dzialka, a nie od martwego ludka (a przeciez najblizszy martwemu ludkowi wcale nie musi byc najblizszy dzialku) Narazie to jakos zalatwilem tworzac dodatkowy obiekt zawierajacy tylko martwego ludka, ale tak to troche jest sztucznie, bo np jak w przyszlosci dodam granaty i latajace ciala, to bede musial rozpisywac zadania ludka na 2 - martwy obiekt - troche nielogiczna lipa (ale zadziala) - Jako amator proszę o wszelkie uwagi itp dotyczące tego - co zle robię, jakie złe praktyki stosuję itp. - Pytanie ostatnie: Jak to jest z tym draw??? Jeżeli w steep zmieniam direction, to za każdym razem muszę odpalać tą funkcję rysującą? Nie powinno to być automatycznie czy coś? Może mi ktoś to logicznie wyjaśnić jak to działa? Ps. Przepraszam z góry, że tyle pytań na raz, ale nie chcę zaśmiecać forum nowymi wątkami. Ps2. Nie mam na tym kompie GM, i nie wiem czy w objekcie timer ustawiłem tworzenie nowych instancji ludka. Jeżeli jest zakomentowane to można odkomentować ^^
-
Hmm. Nie o to mi chodzilo. Ludziki są tworzone alarmem więc jest ich masowy napływ ^^ Chodzi mi o sytuację gdy powiedzmy 2 dzialka pobieraja tą samą instancję i jeden z nich ją niszczy, czy wtedy wygeneruje taki błąd, jeżeli drugie będzie chciało skorzystać z x tej instancji? Pytanie dodatkowe. Jak się obsługuje alarm ze skryptów? Wstawic zdarzenie potrafię, ale czy się da to wszstko zrobić "pisząc"? Dodatkowo owy błąd nie występuje, jeżeli zegar aktywujący zdarzenie strzelania (czyli ustawiania direction kulki na najbliższą instacnję ludzika) zwolnię z 2 na 5...
-
Nie jestem zaawansowanym uzytkownikiem GM - dopiero napisalem kilka skryptow. I trafilem na pewien maly problem. Tworze sobie instancje obiektu - powiedzmy ludzik. Po przeciwnej stronie sa obiekty dzialka ^^, ktore kieruja sie w kierunku najblizszych ludzikow i strzelaja: direction = point_direction(x,y,instance_nearest(x,y,ludzik).x,instance_nearest(x,y,ludzik).y); a = instance_create(x,y,kulka); a.speed = x Kod pewnie napisalem zle, bo pisalem z glowy. Chodzi o to, ze czasami program sie wysypywal, bo nie istaniala zmienna instance_nearest(x,y,ludzik).x. Pewnie chodzilo o to, ze jak jedno dzialko skierowalo sie na dana instancje ludzika i ja zniszczylo to drugie juz nie moglo pobrac x? Jak sobie z tym poradzic? W razie czego wkleje kod tworzonego skryptu. Pytanie2) Jak sie odpala skrypty (ale te "globalne") po uruchomieniu roomu? Szukalem w pomocy ale tam jest tylko o prevent xxx, a ja chcę spradzić czy znadzzenie utworzenia roomu zaistnialo. Pozdrawiam.