Draconis Opublikowano 8 Sierpnia 2010 Udostępnij Opublikowano 8 Sierpnia 2010 Witam Próbuję zrobić aby jeżeli odległość między graczem a celem jest mniejsza niż 100 rysuje się między nimi linia. Napisałem taki krótki kod GML if distance_to_object(cel) < 100 { draw_line(gracz.x,gracz.y,cel.x,cel.y) } I działa on prawidłowo, lecz tylko wtedy jeżeli na planszy jest tylko jeden cel. Jeżeli jest ich więcej to linia jest rysowana zawsze do tego samego celu (nawet jeżeli warunek spełniony jest dla innego) Szukam sposobu, aby linia była rysowana dla tego celu, który spełnia warunek, oraz jeżeli kilka go spełnia to rysowany jest odcinek do każdego. Próbowałem kod umieścić w celu zamieniając distance_to_object(cel) na distance_to_object(gracz), lecz efekt jest identyczny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 8 Sierpnia 2010 Udostępnij Opublikowano 8 Sierpnia 2010 Umieść w obiekcie cel taki kod: GML if (distance_to_object(gracz) < 100) draw_line(gracz.x,gracz.y,x,y) Błąd jest spowodowany tym, że z tego co mi wiadomo jeśli istnieje kilka obiektów X nazwa X odnosi się do tego o najmniejszym id (tego co był stworzony jako pierwszy). Ale głowy za to sobie uciąć nie dam. EDIT: Alternatywnym rozwiązaniem było by umieszczenie w drawie Gracza takiego kodu: GML with(cel) //przeglądamy w "pętli" wszystkie obiekty cel { if (distance_to_object(other) < 100) draw_line(x,y,other.x,other.y) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 8 Sierpnia 2010 Autor Udostępnij Opublikowano 8 Sierpnia 2010 Dzięki, działa, zadam jeszcze tylko jedno pytanie. Jeżeli w ustawiłem dla gracza GML if distance_to_object(wall) < 200 { draw_circle(gracz.x,gracz.y,100,true) } A dla celów kod, który podałeś linia rysuje się zanim okrąg dotknie obiektu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 8 Sierpnia 2010 Udostępnij Opublikowano 8 Sierpnia 2010 To jest pytanie czy twierdzenie? Nie bardzo rozumiem. Nie wiem czy to ci pomoże, ale są dwie funkcje do sprawdzania odległości: distance_to_object() - odległość do wystąpienia kolizji czyli od krawędzi sprite'a do krawędzi sprite'a. point_distance() - odległość między punktami (zwykle współrzędnymi obiektów) Więc w praktyce pierwsza funkcja zwróci zwykle mniejszą odległość niż druga. Ja polecam raczej używać tej drugiej jeśli nie do końca się rozumie różnicę i użycie pierwszej nie jest całkowicie zamierzone. A jeśli to ci nie pomoże to sprecyzuj dokładniej to pytanie tak bym zrozumiał. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 8 Sierpnia 2010 Autor Udostępnij Opublikowano 8 Sierpnia 2010 Dzięki, nie wpadło mi do głowy, że jest inna możliwość. Edit. Czy można tu samemu zamknąć temat? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 8 Sierpnia 2010 Udostępnij Opublikowano 8 Sierpnia 2010 opcje moderacji>> zamknij temat>>idź Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 8 Sierpnia 2010 Autor Udostępnij Opublikowano 8 Sierpnia 2010 opcje moderacji>> zamknij temat>>idź Pewnie jestem ślepy, lecz nigdzie tego nie widzę. edit @down, miałem rację jestem ślepy, szukałem u góry strony w "opcje". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 8 Sierpnia 2010 Udostępnij Opublikowano 8 Sierpnia 2010 Zaraz pod ostatnim postem, ale ponad słowami "1 użytkownik(ów) przegląda ten temat (0 gości i 0 anonimowych użytkowników)" ;) Taka rozwijana lista "Opcje moderacji" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi