Skocz do zawartości

I am Lord

Użytkownicy
  • Postów

    4 892
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    54

Treść opublikowana przez I am Lord

  1. No to się robi Różnie można adresować, to też zależy w którym evencie to robisz. Ogólnie są dwie formy adresowania, pierwsza formą jest adresowanie podając pojedynczą kropkę a druga forma to użycie keyword with W obu przypadkach podajesz nazwę obiektu albo id instancji albo keyword other/self np: obj_mojObiekt.z inst_4DB70D2.z // (w GMS2) (100012).z // (w GMS1 i niżej) other.z self.z za pomocą formy obj_mojObiekt.z odnosisz się do wszystkich instancji o nazwie podanego obiektu, dlatego w tej formie jest to mało użyteczne. Bo gdybyś chciał odczytać zmienną 'z' to odczytałoby ci zmienną z instancji o największym id ze wszystkich obiektów tej nazwy dlatego że GM próbował by kolejno 'zaglądać' do każdej takiej instancji więc nadpisywał by wynik tak długo aż zostanie mu ostatnia i zwróci wartość właśnie tej ostatniej instancji. Ta forma ma większy użytek gdy chcesz zmienić zmienną we wszystkich obiektach tej nazwy jednocześnie np: obj_mojObiekt.z = 100 // i teraz każdy obiekt obj_mojObiekt ma 'z' o wartosci 100 to samo działanie z użyciem with wygląda następująco: with (obj_mojObiekt) { z = 100 } gdybyś jednak chciał użyć with do odczytania zmiennej 'z' to sprawa się komplikuje, zrobiłbyś to na dwa sposoby: // sposób pierwszy var tymczasowaZmienna; with (obj_mojObiekt) { tymczasowaZmienna = z } show_debug_message(tymczasowaZmienna) // konsola wyswietli wartość 'z' // sposób drugi jakasZmiennaLokalna = 0 with (obj_mojObiekt) { other.jakasZmiennaLokalna = z } // przypisałeś wartość zmiennej jakasZmiennaLokalna do wartosci 'z' obiektu obj_mojObiekt Jednak to tylko jest mało użyteczne adresowanie po nazwie obiektu, dużo bardziej użyteczne jest adresowanie bezpośrednio po id instancji ale takie id najpierw trzeba znać. Musisz sobie zwracać uwagę na to jakie funkcje zwracają id instancji, do tych najpopularniejszych należą instance_create(x, y, obj); instance_create_depth(x, y, depth, obj); // tylko dla GMS2 instance_create_layer(x, y, layer_id, obj); // tylko dla GMS2 instance_nearest(x, y, obj); // grupa funkcji z kolizji wykrywania kolizji: collision_*(); // np. collision_circle( x1, y1, rad, obj, prec, notme ); Tak więc, podam kilka praktycznych przykładów: 1. // EVENT STEP var ID; ID = instance_nearest(x, y, obj_skrzynka); show_debug_message(ID.z) // konsola zacznie wyświetlać wartość 'z' skrzynki do której jesteś najbliżej 2. // EVENT STEP var ID; ID = collision_circle( x, y, 128, obj_skrzynka, 0, true ); if (ID != noone) { show_debug_message(ID.z) // konsola zacznie wyświetlać wartość 'z' skrzynki która jest w zasięgu okręgu } /* ten if jest tutaj potrzebny poniważ funkcje collision_* zwracają także keyword noone w przypadku gdy do kolizji nie dojdzie w dodatku gdy w zasięgu jest więcej skrzynek to odczyta wartość z instancji o najwyższym id czyli tego obiektu który ostatni nadpisze zmienną ID*/ 3. // EVENT PRZYCISKU STRZAŁU var ID; ID = instance_create(x, y, obj_bullet); ID.z = z+64; /* nowo utworzona instancja obiektu pocisków: obj_bullet będzie miała na start przypisaną wartość 'z' do wartości 'z' gracza + wysokość gdzie znajduje się pistolet*/ Kolejną najciekawszą sprawą adresowania zmiennych jest użycie keywordu other Jak mogłeś wcześniej zobaczyć, użyłem słówka other wewnątrz with, w tym przypadku other będzie miało wartość id instancji z którego wywołujesz with. Jednak gdyby użyć other w którymś z eventów kolizji to wtedy other przyjmuje wartość id instancji z którą kolizja nastąpiła i tutaj mogę np podać przykład niszczenia się pocisku o ścianę z którą się zderza, będzie to wyglądało tak: // EVENT COLLISION WITH obj_sciana if (z > other.z && z <other.z+other.wysokosc_sciany) { instance_destroy(); }
  2. Była bardzo ładna i w tym stylu graficznym, cukierkowe low poly. Skojarzyłem ze sobą to
  3. A nie robiłeś takiej gry już o kucach? Też była w 3D ale w GMie
  4. I am Lord

    Krabonszcz

    Nigdy się nie wypowiadałem na temat twoich prac bo zwyczajnie nie trafia do mnie ten styl, nie rozmyślałem też nad tym co dana praca ma przedstawiać ale kurde ten autoportret to mi się bardzo podoba, może dlatego że odchodzi trochę od stylu.
  5. Bardzo podoba mi się ten styl, swoją drogą jaka to technika? Jakieś rendery i obróbka ręcznie?
  6. Może ci się tak wydawać bo masz pewnie okrągłe maski kolizji. Ale one zupełnie inaczej działają place_meeting > https://docs2.yoyogames.com/index.html?page=source%2F_build%2F3_scripting%2F4_gml_reference%2Fmovement and collisions%2Fcollisions%2Fplace_meeting.html collision_circle > https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/movement and collisions/collisions/collision_circle.html Co ważniejsze, place_meeting zwraca true lub false a collision_circle zwraca id obiektu z którym nastąpiła kolizja
  7. kurcze, wygląda na trudne coś jednak nic dziwnego że sam na to nie wpadłem.
  8. @Konrad-GM Jak orientujesz się już trochę w Godocie to może ty będziesz wiedział jak ogarnąć tam odpowiednik GMowych surface? Bo ja kombinowałem i szczerze nie wpadłem na żaden pomysł.
  9. Tu mi poka te czołki lepiej na godocie! @Konrad-GM
  10. Wow, imponujące, przeczytam później
  11. instance_destroy(obj_zloto) zadziałałoby w GMS2
  12. Ten bug nie został naprawiony Mike się wypowiedział, przez przypadek usunęli fixa którego przygotowali
  13. Bardzo ciekawy problem, może coś zrypali w tej łatce ostatecznej? Sprawdzę czy mój generator też ma ten problem ze stałym seedem
  14. Aha bo finalna gra zawsze ma randomize na starcie w exe a run i debugger ma stały seed do testów i trzeba randomować ręcznie
  15. A jakbyś dał jeden randomize() na starcie gry zaraz po ustaleniu swojego seeda? Możesz jeszcze zobaczyć inną rzecz, co się stanie jak skompilujesz grę do exe, czy tam też random będzie źle działał
  16. hmm no dobra a sprawdź jeszcze funkcje random() co zwracają za każdym razem, czy zwracają zawsze tą samą liczbę? Bo teraz jeżeli randomy będą zawsze losować tą samą liczbę a mimo to twoje itemki będą inne, to wtedy problemem nie jest losowość a coś innego Może przed var los = irandom(listsize); wstaw show_debug_message(irandom(100)) dla przykładu
  17. sprawdź get_seedem w konsoli przed użyciem randoma w obiektach gdzie się źle losuje czy aby na pewno te obiekty losują z poprawnego seeda. Jak mają za każdym razem ten sam seed a mimo to źle działają to coś faktycznie dziwnego się stało i może to być wina GMa ale jeżeli ma różny seed to widocznie ręczne ustawienie zadziałało zbyt późno?
  18. I am Lord

    Galeria Grafik

    @Nikas Jest to połączenie, arcadowego space fightera ze znakiem bio hazard na tle trybiku który może oznaczać myślenie. Statek i trybik oznacza zamiłowanie do gamedevu do gierek arcadowych a bio hazard występuje często w odniesieniu do muzyki z gatunków industrialu elektronicznego: EBM, power noise, dark electro, Aggrotech i w mocniejszym hardstyle też się pojawia a to są gatunki które najczęściej słucham. No i kolor loga oznacza mój ulubiony kolor po prostu.
  19. Możesz to zrobić przecież, po prostu narysuj tą mapę na surface zamiast czyścić ją jednym kolorem (czarnym pewnie)
  20. Ale jedno z drugim nie ma żadnego związku. W kodzie pewnie gdzieś masz napisaną jakąś zależność między jednym a drugim
×
×
  • Dodaj nową pozycję...