Lunatyk Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 W strategii mam teraz taką sprawę którą nie wiem jak rozwiązać. Gdy rozkażę jednostkom (max 16 zaznaczonych) iść w pewno miejsce to wszystkie schodzą do jednego miejsca. Ja chciałbym zrobić tak jak w większości nowszych grach (np. starcraft II) czyli, że wchodzę jednostką w tłum to reszta się usuwa na bok. Jeśli się nie da tego wykonać to chociaż, gdy mam zaznaczone jednostki to, żeby nie wchodziły w jedno miejsce. Pomógłby ktoś? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muchaszewski Opublikowano 1 Kwietnia 2010 Udostępnij Opublikowano 1 Kwietnia 2010 Musiał byś każdej zaznaczonej jednostce przekazać o ile więcej ma się przesunąć. Jeżeli są to te same jednostki to nie ma problemu jeżeli inne to masz dużo roboty. E: Tego że jednostki się usuwają to nie wiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lunatyk Opublikowano 1 Kwietnia 2010 Autor Udostępnij Opublikowano 1 Kwietnia 2010 Pisząc 'usuwa na bok' miałem na myśli przesuwa. -.- Rozumiem, że muszą się o konkretną odległość się przesuwać. Mam kod taki: GML if(collision_point(x,y,objUnit,true,true) { motion_set(random(360),speed_move); } Tylko to niezbyt ładnie wygląda chociaż działa. Więc może jakaś mała wskazówka jak to miało by wyglądać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 1 Kwietnia 2010 Udostępnij Opublikowano 1 Kwietnia 2010 If koliduję z jednostką { w którą stronę jest wolne miejsce? idę tam. } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 1 Kwietnia 2010 Udostępnij Opublikowano 1 Kwietnia 2010 Tylko pytanie jak to zrobić w kodzie? Ja nie powiem bo nie umiem, ale mam taki sam problem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lunatyk Opublikowano 1 Kwietnia 2010 Autor Udostępnij Opublikowano 1 Kwietnia 2010 Próbowałem tego: GML for(j=0;j<=300;j+=1) for(i=0;i<=359;i+=1) if(place_free(x+lengthdir_x(j,i),y+lengthdir_y(j,i)){x=x+lengthdir_x(j,i);y=y+lengthdir_y(j,i);break;} Do wyznaczania która droga jest wolna. Niestety to nie działa, więc prosiłbym o pomoc z tym problemem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
alwin Opublikowano 5 Kwietnia 2010 Udostępnij Opublikowano 5 Kwietnia 2010 Rozwiazałeś może ten problem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 5 Kwietnia 2010 Udostępnij Opublikowano 5 Kwietnia 2010 Prawdopodobnie nie. Ale ja znalazłem. Zamień break na exit, i to cała robota. Dlaczego ? Wydaje mi się, że break zatrzymuje tylko drugą pętlę. Pierwsza wykonuje się kolejny raz, a co za tym idzie - znów otwiera się druga pętla i x,y się zmienia więcej niż jeden raz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lunatyk Opublikowano 8 Kwietnia 2010 Autor Udostępnij Opublikowano 8 Kwietnia 2010 Wow... Nie wiedziałem, że tu jeszcze ktoś pisze. @Assassin Dzięki, ale nie skorzystam. Ostatecznie pomógł mi ΨΧΞ i dziękuję mu wielce za pomoc. Problem już rozwiązany, więc można zamknąć temat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi