pivot18 Opublikowano 28 Stycznia 2012 Udostępnij Opublikowano 28 Stycznia 2012 Witam. Ostatnio robiąc skrypt dla wieżyczki zauważyłem że ma problemy z namierzaniem wroga. Chodzi to to, że nie wiem co zrobić, aby nie namierzał wroga który akurat jest za ścianą. Graficznie chodzi mi o to. http://screenshooter.net/9914128/vaqadbl X powinien namierzać Y ,ale Z jest niestety bliżej i dlatego jest namierzany. Puki co używam instance_nearest() Z góry dzięki. Jeśli temat był to oznacza że nie potrafię szukać o.O Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 28 Stycznia 2012 Udostępnij Opublikowano 28 Stycznia 2012 Musisz zrobić listę obiektów wroga. Następnie wyeliminuj te, które są za ścianami, których nie widzi. Z pozostałych wybierz tego, który jest najbliżej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pivot18 Opublikowano 28 Stycznia 2012 Autor Udostępnij Opublikowano 28 Stycznia 2012 A jak mogę je "wyeliminować"? zdezaktywować chwilowo? Dobra, nie wiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 28 Stycznia 2012 Udostępnij Opublikowano 28 Stycznia 2012 Po prostu robisz listę i dodajesz do niej wszystkie obiekty (czyli ich zmienną id), które nie są za ścianami i są w wystarczającej odległości. Może gdzieś nawet jest skrypt. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 28 Stycznia 2012 Udostępnij Opublikowano 28 Stycznia 2012 collision_line się kłania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dzaher Opublikowano 28 Stycznia 2012 Udostępnij Opublikowano 28 Stycznia 2012 Robisz sobie skrypta o nazwie np. instance_nearest_ext i wklejasz do niego to: GML //instance_nearest_ext(player,enemy,wall) global._len = noone; global._nearID = noone; with(argument1) { dis = point_distance(x,y,argument0.x,argument0.y); if (dis < global._len) || (global._len == noone) { if (!collision_line(x,y,argument0.x,argument0.y,argument2,1,0)) {global._len = dis; global._nearID = id;} } } return global._nearID; Użycie np. GML near = instance_nearest_ext(nazwa obj wiezy gracza albo cos, nazwa obj wroga,nazwa obj sciany) if (near) { mp_potential_step(near.x,near.y,4,true); } Pewnie można zrobić to lepiej, ale tak na szybko :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pivot18 Opublikowano 28 Stycznia 2012 Autor Udostępnij Opublikowano 28 Stycznia 2012 @HuderLord Samo collision_line nic tutaj nie zrobi. @Topic Dzięki za pomoc. Wydaje się ze działa. Temat do zamknięcia. 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ę