Skocz do zawartości

AI ciąg dalszy


Rekomendowane odpowiedzi

Mój kod nie jest taki dobry jak się wydawał :(. Otóż chciałbym by żołnierz strzelał do najbliższego SSsoldier. Z tym jest problem ale duży mam także... I tu coś poważniejszego- z unikaniem pocisków. Tutaj podsuwam że być może przyda się funkcja switch. Dajmy na to trzy case'y pierwszy to poruszanie się o pare pikseli w prawo, drugi to w lewo a trzeci to stanie w miejscu. A wy? Jakbyście to załatwili?

 

 

 

A żeby nie pisać kolejnego tematu- czy jeżeli narysuję path po którym ma się poruszać obiekt (a akurat nie jest tam gdzie się zaczyna) to czy pójdzie do miejsca gdzie ów path się zaczyna?

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdzaj czy prosta jaką tworzy tor pocisku koliduje z AABB twojego wroga i ew. podejmuj jakąś czynność typu odsunięcie się w lewo/prawo(albo randomowo, albo policzenie co będzie szybsze). 

Odnośnik do komentarza
Udostępnij na innych stronach

Co do strzelania do najbliższego wroga, id najblizszego zwróci ci funkcja instance_nearest. potem wystarczy nakierowac już pocisk na pozycje obiektu z id zwróconym przez funckje.

 

var unik;

unik = choose(0,1,2);

 

switch (unik )

{

case 0:

hp-=10;

break;

 

case 1:

x+=10;

break;

 

case 2:

x-=10;

break;

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Co do strzelania do najbliższego wroga, id najblizszego zwróci ci funkcja instance_nearest. potem wystarczy nakierowac już pocisk na pozycje obiektu z id zwróconym przez funckje.

 

var unik;

unik = choose(0,1,2);

 

switch (unik )

{

case 0:

hp-=10;

break;

 

case 1:

x+=10;

break;

 

case 2:

x-=10;

break;

}

 

Sprytne te uniki, lol. Serio, co to ma być?

 

A co do strzelania do żołnierza to:

GML
a=instance_nearest(x,y, o_ssoldier);

b=instance_create(x,y,o_bullet);

b.direction = point_direction(x,y,a.x,a.y);

Odnośnik do komentarza
Udostępnij na innych stronach

a bo ja wiem jak on chce unikać tego? czy ma jakies animacje czy co? dlatego

 

 

GML
var unik;

unik = choose(0,1,2);

 

switch (unik )

{

case 0://tu dostaje

hp-=10;

break;

 

case 1://unik w prawo

x+=10;

break;

 

case 2://unik w lewo

x-=10;

break;

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Leci pocisk i ma losować czy obiekt przeskakuje w lewo (nawet jak pocisk leci od lewej?), czy w prawo? Jak masz dawać jakieś gó**o to nie dawaj nic.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli pociski to solidy, zamień ruch wroga z move_towards_point na mp_potential_step, wrogowie sami będą schodzić z drogi pociskom.

 

ad 2, jeśli w path_start ustawisz absolute na true, zacznie z miejsca gdzie path jest ma początek.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...