Pablo-GM Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Witam ! Staram się stworzyć walkę dwóch oddziałów wojskowych i mam drobny dylemat , gdyż wszystko dzieje się zbyt statycznie . Przygotowałem przedstawienie problemu graficznie : Koła - o ile można tak to nazwać to nasze oddziały cała grupka wojaków wybiera ten sam cel , a nie tak jak chciałbym czyli wybieranie najbliższego wroga . Zakodowane mam to tak : GML if distance_to_object(o_war_szeregowy) <= 2800 { target=o_war_szeregowy; } //ai if distance_to_object(target) <= 100 { mp_potential_step(target.x,target.y,spd2,false); } if distance_to_object(target) <= 150 { spd1=0 spd2=0 move_towards_point(target.x,target.y,0); } if distance_to_object(target) <= 2800 { mp_potential_step(target.x,target.y,spd1,false); direction=point_direction(x,y,target.x,target.y) } if fire_ready=true && (target) { bulletx = x+lengthdir_x(weap_pos, imagedir-90); bullety = y+lengthdir_y(weap_pos, imagedir-90); instance_create(bulletx+lengthdir_x(weap_len, imagedir), bullety+lengthdir_y(weap_len, imagedir), obj_luska); bul = instance_create(bulletx+lengthdir_x(weap_len, imagedir), bullety+lengthdir_y(weap_len, imagedir), o_pocisk_NPC); bul.direction = point_direction(x,y,target.x,target.y); bul.speed = 30; bul.creator = object_index; bul.pwr = 2; alarm[0] = room_speed*0.7; fire_ready = false; sound_play(ak_47_s) } Pozdrawiam , Pablo Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Gdzie w tym kodzie jest wyznaczanie celu do zabicia? Skorzystaj z instance_nearest ;) . Z tego co widzę, odnosisz się do obiektu jak do pojedynczej instancji. Nie wolno tak. GML if distance_to_object(o_war_szeregowy) <= 2800 { target=o_war_szeregowy; } Zamień na: GML target = instance_nearest( x, y, o_war_szeregowy ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Cel jest wyznaczany poprzez sprawdzenie odległości od wroga . Co konkretniej proponujesz z tym instance_naerest ? Mogę przez nią przypisać wartości ale mimo to nie rozumiem Twojego planu. Nieładnie tak edytować : ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 a nie tak jak chciałbym czyli wybieranie najbliższego wroga No chyba się nie rozumiemy ;) . Edytowałem, bo nie mogłem się doszukać sensu w pierwszych linijkach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Własnie o to mi chodziło , serdeczne dzięki . Korzystając z okazji może uda mi się wyjaśnić jeszcze jedną moją gm'ową zagadkę , otóż chciałbym aby nobki omijały sobie elegancko te solidy - czytalem na temat funkcji GML mp_potential_step(target.x,target.y,spd2,true); Ale w ostateczności nie zdała egzaminu , może jakieś propozycje ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Wszystko zależy od rodzaju gry. Jeśli dokładność ma być duża, to musisz chwilkę zaczekać ;) . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 mp_grid, mp_grid_path :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Myślę , że jak już coś robić - to robić to dobrze . Także zdecyduję się zaczekać . UP poczytam na temat tych funkcji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Sorry Pablo, ale to nieco bardziej skomplikowana sprawa. Stworzę przykład i wstawię go na forum :) . Może dziś, a jak nie zdążę, to jutro. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 No rozumiem , a to chociaż może pomóż mi z tą prostszą wersją - jakiś zarys tej wojny chciałbym już dziś mieć gotowy : ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Prostsza wersja chyba jednak odpada. Nadaje się tylko do prymitywnych gier ;) . Nie niecierpliw się, zaraz może coś wymyślę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 W takim razie wracam do testów metody prób i błędów - no i delikatnie liczę na ten przykładzik . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Żadnego przykładziku nie będzie, bo, szczerze mówiąc, tylko bym się ośmieszył ;) . Sprawa jest banalnie prosta. Create: GML xx = 0; yy = 0; gospeed = 3; Step: GML if ( point_distance( x, y, xx, yy ) <= gospeed ) { x = xx; y = yy; } if ( x != xx || y != yy ) mp_potential_step( xx, yy, gospeed, true ); No i np. w Global Mouse Left Pressed, czy gdzie tam mu rozkazujesz iść: GML xx = mouse_x; yy = mouse_y; Zalecane jest, by każdy omijany obiekt był solid. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Up, pisał, że mp_potential_step nie działa zbyt dobrze :) https://gmclan.org/up7221_12_dojdz.html O to chodziło? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 To właśnie jest te "prostsze rozwiązanie", które nijak się sprawdza w dynamicznych grach strategicznych ;) . Siatka to straszne ograniczenie. W dodatku u ciebie jeszcze chodzi obiekt po czerwonych bloczkach. A ja dałem wskazanie co do mp_potential_step. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Wiem, dało zrobić się to lepiej(kiedyś umiałem), ale to powinno go nakierować :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Hiuston mamy problem , sprawa nadal przedstawia się tak : Kod w create taki jak podałeś , step również tylko ze zmianą czegoś takiego(w stepie) : GML if distance_to_object(target) <= 2800 { xx=target.x yy=target.y direction=point_direction(x,y,target.x,target.y) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 direction=point_direction(x,y,target.x,target.y) Oto powód to będzie direction=point_direction(xprevious,yprevious,x,y) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Strasznie dziwnie teraz te postaci się zachowują :huh: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 10 Sierpnia 2011 Udostępnij Opublikowano 10 Sierpnia 2011 Po co w ogóle ta zmiana direction? Direction/speed/hspeed/vspeed nie idzie w parze z mp_* . xx i yy to współrzędne punktu, do którego dany obiekt ma zmierzać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 10 Sierpnia 2011 Autor Udostępnij Opublikowano 10 Sierpnia 2011 Użyłem image_angle , dziękuje wszystkim za pomoc . Zamykam : ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi