Markar Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Mam takie pytanie: czy da się zrobić kolizje z vertexami(konkretnych obiektów), lub wszystkimi liniami rysowanymi w konkretnym obiekcie? Wolałbym kolizje z liniami zroibć jeśli się da. Proszę o pomoc w zrobieniu takich kolizji. Bez ustawiania maski, bo wtedy musiał bym z góry wiedzieć jaki jest kształt narysowany z lini. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 chodzi o przeciecie z linia czy sprawdzenie przynaleznosci do jednej ze stron linii? Pierwsze to rownanie z dwoma niewiadomymi, drugie to dot product. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Emm... Chodzi o coś działającego jak: if collision_line(...). Aby gracz przy kolizji z każdą linią która jest rysowana w konkretnym obiekcie zatrzymywał się, czyli speed=0 Da się takie coś zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 wlasnie dales sam sobie odpowiedz - collision_line() skoro ma sprawdzac kolizje obiektu z linia w innym obiekcie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Tak, ale nie znam pozycji x i y lini... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 a kto ma je znac? przechowuj w takim razie te koordynaty (punkty) kazdej linii. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Jak mam je przechowywać? W jaki sposób? Zapisywać je do zmiennej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 do tablicy lub dwoch list. EDT: napisz jaka sytuacje chcesz konkretnie osiagnac a pomoge Ci dobrac najlepsze rozwiazanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Hmmm... Objaśnij mi jak mam to zrobić, jakimi funkcjami się posługiwać, jak je wykorzystać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 pierw mi powiedz jak chcesz by to wygladalo, krok po kroku objasnij sytuacje, bo nie chce akcji ze dam Ci rozwiazanie ktore potem sie okaze ze jest optymalne dla zupelnie innej sytuacji. Czyli napisz co sie dzieje w grze, bo tak to stoje na rozstaju drog nie wiedzac ktora isc. Moje zgadywanie: Kolizje typu gry LocoRoco? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Nie robię gry, bawię sie gmem. Nie wiem jak masz to napisać... Masz gracza top down i przy kolizji z liniami narysowanymi np. w O_skrzynka(ja mam to w kodzie, skrypcie, nie wiem jak to ując, to jest oddzielny kod rysowanie tej figury, działa to na takiej zasadzie że rysuje czterokąt funkcjami draw_line (nie komentuj tego xD) rysując linie od argument0, argument1 do argument2,argument3.) Takie coś ma być ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 GML (ShapeCreate) // return: shape id var __s,__x,__y,__tx,__ty; __s=ds_map_create() __x=ds_list_create() __y=ds_list_create() __tx=ds_list_create() __ty=ds_list_create() ds_map_add(__s,'x',__x) ds_map_add(__s,'y',__y) ds_map_add(__s,'tx',__tx) ds_map_add(__s,'ty',__ty) return(__s) GML (ShapeDestroy) // argument0: shape id ds_list_destroy(ds_map_find_value(argument0,'x')) ds_list_destroy(ds_map_find_value(argument0,'y')) ds_list_destroy(ds_map_find_value(argument0,'tx')) ds_list_destroy(ds_map_find_value(argument0,'ty')) ds_map_destroy(argument0) GML (ShapeDraw) // argument0: shape id // argument1: primitive type // argument2: texture id var __x,__y,__tx,__ty; __x=ds_map_find_value(argument0,'x') __y=ds_map_find_value(argument0,'y') __tx=ds_map_find_value(argument0,'tx') __ty=ds_map_find_value(argument0,'ty') draw_primitive_begin_texture(argument1,argument2) for(i=0;i<ds_list_size(__x);i+=1) draw_vertex_texture(ds_list_find_value(__x,i),ds_list_find_value(__y,i),ds_list_find_value(__tx,i),ds_list_find_value(__ty,i)) draw_primitive_end() EDIT: Zaraz wracam do domu wiec po powrocie dopisze reszte funkcji lub zrobie Ci przyklad, bo zostalo pare skryptow do napisania ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 18 Stycznia 2010 Autor Udostępnij Opublikowano 18 Stycznia 2010 Lepiej zrób przykład, bo tak to sie nie mogę połapać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Slash (Pental) Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 PsichiX, błagam, tylko nie mapy. Moim zdaniem to najgorsze rozwiązanie, przymulają niemiłosiernie. Najlepszym rozwiązaniem i tak zostaną tablice :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 slash, zobacz ile elementow trzyma mapa i jakie to elementy. Mapa jest dobrym rozwiazaniem pseudo-obiektowosci, gdy trzymamy malo danych. Spytaj Tymcia :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Slash (Pental) Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Jeżeli twierdzisz, że przy większej ilości figur nadal będzie to wydajne, to zwracam honor. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Mamy 2 opcje, może lepiej by było zrobić teścik na wydajność i ostatecznie potwierdzić tezę? To uprości sprawę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Hunter, tablice to katastrofa gdy w gre wchodzi więcej niż jeden model na obiekt. Ponadto nie posiadają możliwości czyszczenia pamięci :) zabieram sie za pisanie tego przykładu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Wiesz PsichiXie, zapis/odczyt/zmiana wartości indeksu tablicy jest szybszy niż zapis/odczyt/zmiana listy/grida o ok 2x (map nawet nie ma co zestawiać ;D) :P (choć ze zwolnieniem z pamięci gorzej, się zgodzę) Ale nie po to pisałem. Mógłbyś wyjaśnić, co miałeś na myśli mówiąc Mapa jest dobrym rozwiazaniem pseudo-obiektowosci, gdy trzymamy malo danych./quote]Bo nijak nie mogę wymyśleć, co mają takie, że tak to określę, bardziej rozwinięte tablice do obiektowości O.o Możliwość posiadania dowolnej liczby wartości dla tego samego klucza? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 Mógłbyś wyjaśnić, co miałeś na myśli mówiącMapa jest dobrym rozwiazaniem pseudo-obiektowosci, gdy trzymamy malo danych.Bo nijak nie mogę wymyśleć, co mają takie, że tak to określę, bardziej rozwinięte tablice do obiektowości O.o A broń boże nie mylić mapy z tablicą, mapa to lista par klucz-wartość. Nie sprawdzałem czy kluczem może być liczba ale jeśli może to bardziej skupiał bym się na nich, niżeli stringach. Dwa że jeśli string klucza to jeden znak to nie ma różnicy jakby porównywać liczby - różnica kilku inistrukcji procesora co się bardzo szybko wykonuje. Ponad to znacznie lepiej uzywać map niż listy z racji iż GMowe listy przechodzimy wyłącznie po indeksach (ds_list_find_value(id,index)), jak tablice, gdzie lista w rzeczy samej staje się wektorem, nie listą. Mapy za to możemy przechodzić jak prawdziwe listy - iteratorem (ds_map_find_first(); ds_map_find_next(); itd.), co daje im prawo nazywać się listami par, a co nie ma znaczenia wydajnościowego dla długości klucza. A do obiektowości to ma się struktura danych trzymanych w mapie. zapis/odczyt/zmiana wartości indeksu tablicy jest szybszy niż zapis/odczyt/zmiana listy/grida o ok 2x (map nawet nie ma co zestawiać ;D) gdy nie przechodzimy iteratorem to owszem, jest szybsze dla tablic, gdy jednak przechodzimy mape iteratorem to nawet nie pytaj co szybsze :P EDIT: hehe, a jednak mozna uzywac liczb jako kluczy :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 To miałem na myśli mówiąc "bardziej rozwinięte", czyli dowolne klucze (nie musza następować po sobie), pare wartości dla tego samego klucza i lepsiejsze "zarządznie" :P Ale kurna, nie odpisałeś na to, o co pytałem - co w takim wypadku mapy mają wspólnego z ce plus plusową obiektowością. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 18 Stycznia 2010 Udostępnij Opublikowano 18 Stycznia 2010 A do obiektowości to ma się struktura danych trzymanych w mapie. obiekt klasy. Obiektem jest mapa, klasą jest szablon wypełniania mapy. Istnieje konstruktor, destruktor, dostęp do danych po nazwach, gdzie tutaj nazwą może być i liczba. Obiekt zajmuje pamięć przy tworzeniu, a przy usuwaniu zwalnia zajmowaną pamięć - tablice już nie. EDIT: Przyklad trafi do zasobow gmclanu 19 stycznia 2010 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 19 Stycznia 2010 Udostępnij Opublikowano 19 Stycznia 2010 Ponadto nie posiadają możliwości czyszczenia pamięci tablica[numer] = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 19 Stycznia 2010 Udostępnij Opublikowano 19 Stycznia 2010 Pieter, nie żartuj sobie bo uwierzą :0 Wyzerowanie != zwolnienie pamięci Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 19 Stycznia 2010 Autor Udostępnij Opublikowano 19 Stycznia 2010 To taaaa... Co z tym przykładem? Chcę zacząć moją grę w której nie ma wcale obrazków, tylko system moich wielokątów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 19 Stycznia 2010 Udostępnij Opublikowano 19 Stycznia 2010 siadam i pisze dalej. wczoraj w nocy musialem zrobic co innego niestety :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę