karolo320 Opublikowano 11 Stycznia 2013 Udostępnij Opublikowano 11 Stycznia 2013 Siemka. Otóż mam sobie bohatera w TDS i tak się składa, że ma on karabinek. Wypluwa on pociski z 20 speedem, a wrogowie mają 10px;10px, więc pociski czasami je przelatują. Z tym sobie poradzę (collision_line(x,y,x-lengthdir_x(speed,direction),y-lengthdir_y(speed,direction),o_wrog,1,0)). Ale jeśli jest kupka wrogów, muszę wybrać tego najbliżej bohatera+żeby przecinał spełniał warunek kolizji z pociskiem. Jak zrobić to optymalnie? Narazie sprawdzam collision_line, a potem 20 razy (bo 20 speed) w najgorszym przypadku collision_point z kolejnymi punktami. Są jakieś listy w GM, ale nigdy ich nie rozumiałem. Jeśli ktoś chciałby mi to wytłumaczyć, byłbym bardzo wdzięczny. Zamieszczam też rysunek sytuacji: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 11 Stycznia 2013 Udostępnij Opublikowano 11 Stycznia 2013 Na pewno lepiej będzie: collision_line(x,y,xprevious,yprevious,o_wrog,1,0) Co do kolizji to chyba nie pomogę, a może wystarczy tylko zamienić parametry? Wszystko zależy od tego jak działa collision_line, czy wybiera instance wg depth czy wg pozycji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Stycznia 2013 Autor Udostępnij Opublikowano 11 Stycznia 2013 xprevious=/=x-lengthdir_x(speed,direction). tak samo z xprevious. Robiłem tak samo z xprevious właśnie i collision line nie działało w 50% przypadków. collision_line wybiera obiekt z najniżyszm ID, więc odpada. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 11 Stycznia 2013 Udostępnij Opublikowano 11 Stycznia 2013 x-lengthdir_x(speed,direction) poda pozycję wg aktualnego speed i direction, a nie wg tego jakie był step temu. A na pewno szybciej jest odnieść się do zmiennej niż wyliczyć lengthdir. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Stycznia 2013 Autor Udostępnij Opublikowano 11 Stycznia 2013 Ale mówię ci, że nawet jeśli obiekt porusza się tylko za pomocą speed, to previousy i tak nie działają. Wczoraj to sprawdzałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 11 Stycznia 2013 Udostępnij Opublikowano 11 Stycznia 2013 Wystarczy napisać sobie zmodyfikowany collision_line albo jeszcze prościej: skorzystać z gotowego skryptu http://www.gmlscripts.com/script/collision_line_first. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Stycznia 2013 Autor Udostępnij Opublikowano 11 Stycznia 2013 dziękuję. 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ę