Pieter Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Jak już wiecie od pewnego czasu próbuje napisać silnik naliczania okrążeń do mojej gry. Okazało się to bardzo proste i mam już prawie wszystko ukończone lecz znów mam problem. Silnik opiera się na checkpointach, by zaliczyć okrążenie musisz zaliczyć każdy "punkt kontrolny" wszystko ładnie, pięknie zrobione gdyby nie to że moja gra ma bardzo pozawijane mapy i żeby narysować każdy chceckpoint musiał bym strasznie długo nad tym siedzieć. Dlatego wymyśliłem system w którym kładę klocki o powierzchni 16x16 obok siebie i gdy samochód przejedzie jeden z nich i oznacza go jako zaznaczony to klocki w odległości 16 pixeli od zaznaczonego także się powinny zaznaczać. Powinny bo się nie zaznaczają i tu jest mój problem. Gdzie popełniłem błąd? Kod sprawdzający czy inne klocki są zaznaczone znajduje się w obiekcie check w evencie step. https://gmclan.org/up44_11_laps.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 17 Listopada 2006 Filar Społeczności Udostępnij Opublikowano 17 Listopada 2006 Szczerze mówiąc to głupie rozwiązanie. Ja bym na twoim miejscu zrobił coś takiego jak w różnych edytorach wyścigówek, a mianowicie stawiasz jeden klocek po jednej stronie drogi, potem drugi po drugiej i między nimi powstaje linia, przez którą każdy zawodnik musi przejeżdżać. Teraz każdy z graczy sprawdza cały czas czy nie koliduje z tą linią za pomocą funkcji collision_line. Oczywiście sprawdzamy kolizję tylko z następnym checkpointem a nie wszystkimi na raz, bo w ten sposób obciążylibyśmy niepotrzebnie gm'a. I jeśli nie chcesz robić osobnego edytora tras, to po prostu stawiając klocki w edytorze room'a, w ich eventach create twórz zmienne z id klocka pary. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 Dobry pomysł Ranmus. Spróbuje coś zrobić i jeżeli mi się uda to tu to opublikuje. Ale jeżeli nie to będę potrzebował pomocy z tym obecnym co tu jest... EDIT: Nie daje rady. Co chwile jakiś błąd. :/ Pomóżcie mi z jednym z tym pomysłów plss Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Brawo. A teraz myślimy... popraw mnie Ranma albo ktoś jeśli zrobiłem byka ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 Niestety ja myśleć nie potrafie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 a może poprostu brak umiejętności matematycznych, pojęcia funkcji sinus i cosinus? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 Zawsze się zastanawiałem co obliczają... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 http://pl.wikipedia.org/wiki/Funkcje_trygonometryczne http://pl.wikisource.org/wiki/Całki_f...gonometrycznych http://pl.wikibooks.org/wiki/Matematyka_dl...#261;ta_ostrego http://pl.wikibooks.org/wiki/Matematyka_dl...61;ta_dowolnego http://pl.wikibooks.org/wiki/Matematyka_dl...m/Trygonometria Powinno ci wystarczyć :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 a ja wole zamiast tych linków żebyście naprawili mi ten przykład co dałem w pierwszym poście... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Tymon, nie sprawdzalem ale wydaje mi sie ze powinno byc: L1x=Ax+cos(degtorad(k))*w L1y=Ay-sin(degtorad(k))*w E. na rysunku k powinno byc troche inaczej zaznaczone. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Ja bym zrobił objekt Point1 i Point2, który tworzy Line1 w ten sposób: lin = instance_create(x,y,Line1); p2 = instance_nearest(x,y,Point2); lin.image_angle = point_direction(x,y,p2.x,p2.y); lin.image_xscale = distance_to_object(p2) / 64 zamiast 64 możesz wpisać szerokość sprite'a ważne jest aby origin_x Line1 miał wartość 0 a origin_y miał wartość center Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Oto przykład: https://gmclan.org/up1096_11_Checkpoints.html Ha! I nie trzeba było używać tego mętliku Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 i nie trzeba było robić double posta :P Dobry przykład matt ale chciał bym żebyś też naprawił mi ten mój pls :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Zawsze się zastanawiałem co obliczają... bez znajomości matmy to nigdy nie zrobisz dobrego programu takiego naprawde dobrego który byłby napisany w taki sposób by ciagnąć jak najmniej mocy kompa i jednocześnie wydajnie pracować... jak na złość matma jest trudna :/ ja szczególnie to odczuwam ostatnio i też mam problem z funkcją sin i cos mimo że już to miałęm w budze... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Pieter, to nie możesz poprawić swojej gry na podstawie tego co dał Matthew :P ? Zachowujesz się jak zwyczajny newbie, a takim chyba nie jesteś, prawda? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 Wiem i nie jestem newbem :P ale jednak wolał bym ten mój przykład :P to pomoże mi ktoś? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Hanjuso, masz w pełni rację :) Powinienem dodać jeszcze pozycję punktu. Mat, wiesz że ja należę do osób leniwych :P https://gmclan.org/up152_11_czekpointy.html Mi się nie chce rozstawiać setki razy takich punktów jak tylko zmieni mi się path dla samochodów AI. Pieter, zaraz wpiszę Ci to w ten pliczek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 spox a wiesz tymon że nie korzystam z pathu bo nie robie IA gracza. to do gry sieciowej. wystarczy że poprawisz mi mój przykład co dałem w pierszym poście :D pls poprawcie ten co mam w pierwszym poście :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Rozwiązanie jest proste, dałeś other zamiast obj :3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 dzięki tymon :D o to mi chodziło :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Pieter co do twojego przykladu, to popelniles 2 bledy. 1. Jezeli uzywasz instance_place, to musisz podac dokladna pozycje pozycje obiektu, czyli np. x+16, nie x+1. Zeby dzialalo x+1 trzeba uzyc instance_place. 2. Zle uzyles other. Uzywamy to, gdy kozystamy z eventu kolizji z obiektem, lub instrukcji po kodzie with(xxx). W twoim przykladzie wystarczy napisac obj.costam zamiast other.costam. Edit. nie odswiezylem tematu i Tymon mnie wyprzedzil ;( Edit2. tak patrze ze jednak z tym instance position bylo dobrze ;| 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ę