Skocz do zawartości

Background color colission


Rekomendowane odpowiedzi

czesc

 

czy idzie zrobic kolizje obiektu np.z KOLOREM CZARNYM z background??

 

podaje link z przykladem,gdzie w background jest białe tło,po ktorym chciałbym aby wszystko sie poruszało

i sa czarne linie,z którymi chciałbym aby wszystko wchodzilo w kolizje

 

http://wyslijto.pl/plik/f1k67dwpum

 

przyklad colission background

 

jeżeli ktoś jest w stanie niech odeśle gotowy plik z kolizją,jestem bardzo ciekaw czy idzie takie cos zrobic

 

pozdrawiam :)

Odnośnik do komentarza
Udostępnij na innych stronach

Poszukaj sobie w dokumentacji funkcji która zwraca kolor pixel'a z danych współrzędnych (jeśli się nie myle, to istnieje taka funkcja, jak nie to zawsze możesz poszukać jakichś rozszerzeń do gm'a.), a potem sprawdzaj czy pod/nad tobą jest ten twój czarny pixel, albo po lewej/prawej od cb. Jeśli tak to zaszła kolizja + pasuje info z jakiejż to strony ona zaszła. Najlepiej sprawdzać to zanim w ogóle poruszysz obiektem ( coś jak if( place_free(x,y) ) ).

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, nie powinno się sprawdzać kolizji z tłami. Po drugie draw_get_pixel() jest najwolniejszą funkcją jaka istnieje w GM.

Twórz obiekty z którymi będzie kolizja. Będzie to o wiele prostsze, będziesz mógł je dezaktywować i modyfikować podczas gry.

Odnośnik do komentarza
Udostępnij na innych stronach

wiem że to bardzo niepopularna metoda,ale tylko ona wchodzi w gre ze wzgledu na to iż mapa bedzie bardzo skomplikowana i zawiła,ten przykład do ktorego podałem linka to tylko bardzo, bardzo wielkie uproszczenie i naświetlenie tematu

 

czy możecie odesłać moj program z prostym przykładem funkcji draw_get_pixel(),nie używałem jej jeszcze,chciałbym

zobaczyc jak dziala w praktyce

 

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma czegoś takiego jak prosty przykład draw_get_pixel(). Ta funkcja wykonuje się 0.1s. Sprawdzanie tak kolizji jest debilnym sposobem. Zapomnij o tym.

 

Najprostszym sposobem dla Ciebie będzie zrobienie nowego sprite o jednym kolorze (twoim czarnym) i sprawdzanie z nim precyzyjnej kolizji, co też jest głupim pomysłem.

Odnośnik do komentarza
Udostępnij na innych stronach

^@Ech nie doczytałem, widzę że Threef już to napisał co ja chciałem :P

 

Czemu akurat z backgroundem? Nie lepiej stworzyć maskę kolizji zrobić ja niewidoczną i dać ją na mapę? Poniekąd po to chyba jest precision collision check (czy jakoś tak) w właściwościach spritu

 

niestety nie wiem jak szybka jest ta metoda

no i na pewno exe będzie więcej ważyć z powodu masek

Odnośnik do komentarza
Udostępnij na innych stronach

czesc

 

czy idzie zrobic kolizje obiektu np.z KOLOREM CZARNYM z background??

 

podaje link z przykladem,gdzie w background jest białe tło,po ktorym chciałbym aby wszystko sie poruszało

i sa czarne linie,z którymi chciałbym aby wszystko wchodzilo w kolizje

 

http://wyslijto.pl/plik/f1k67dwpum

 

przyklad colission background

 

jeżeli ktoś jest w stanie niech odeśle gotowy plik z kolizją,jestem bardzo ciekaw czy idzie takie cos zrobic

 

pozdrawiam :)

 

 

Prosty przykład kolizji obiektu z kolorem tła.

 

w create obiektu

GML
opad:=true;

 

w step obiektu

GML
if opad==true then if draw_getpixel(x,y+1)<>c_black then y+=1 else opad:=false;

 

Gdy obiekt natrafi na czarny kolor to się zatrzyma i przestaje sprawdzać kolizję. Ale tak jak koledzy wyżej piszą - wooooooolne. Jak ktoś pamięta stareńkiego scorcha to na maleńkim roomie (640x250) obliczanie i przerysowanie opadania gruntu po strzale o promieniu 30px trwa całą sekundę (przy założeniu ze cały grunt jest jednego koloru bo grunt rysuję całymi liniami a nie punktowo).

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Skoro możesz mieć tak duże tło z czarnymi elementami (albo tileset) to możesz mieć tyle samo obiektów (i dezaktywowac te poza viewem za pomocą parenta). A będzie szybciej, gwarantuję - ja mapę 60000x60000 tak osbługiwałem, z kilkunastoma tysiącami instancji obiektów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

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