Skocz do zawartości

skromne AI


OsamodasxD

Rekomendowane odpowiedzi

robie gre widoczna top down i potrzebny mi jest skrypt ktory bedzie odpowiadal za poruszanie sie przeciwnika (wylacznie chodzenie, zadne uzywanie czarow itp)

 

probowalem to robic juz ze 3 dni, i jaki efekt? co nie zrobie to przeciwnik wiecznie podchodzi mi na x i y gracza

 

a konkretnie:

-jezeli odleglosc od gracza bedzie < np 100 wtedy sie odsun w losowa strone o ilestam ( probowalem tutaj z distance_to_object)

-przeciwnik nie potrafi wyjsc poza teren rooma

-jezeli dystans> np 100, ruszaj sie np w prawo, potem w lewo etc

 

oczywiscie przeciwnik ciagle patrzy sie w kierunku gracza

 

a to moje kody ktorych probowalem uzywac ( tylko mi sie nie smiac ;D)

 

step ogolny:

direction=point_direction(x,y,hero.x,hero.y);
image_angle = direction+270

 

step1:

 

if distance_to_object(hero)<100
{
    ruch=round(random(1));
    czas_ucieczki-=1;
if ruch=0
{
    czas_ucieczki-=1;
    move_towards_point(hero.x,hero.y,-1);
}
if ruch=1
{
    czas_ucieczki-=1;
    if direction>115 and direction<215 then x+=1 czas_ucieczki-=1;
    if direction>315 and direction<45 then x-=1 czas_ucieczki-=1;
    if direction>45 and direction<115 then y+=1 czas_ucieczki-=1;
    if direction>215 and direction<315 then y-=1 czas_ucieczki-=1;
}
}
if czas_ucieczki<=0 
{
speed=0;
x+=0;
y+=0
}

 

step nr2:

 

//do przodu ( sam poczatek bosa)
    image_speed=0.3
if chodzenie_wstep>0
{
    sprite_index=chodzenie;
    chodzenie_wstep-=1;
    y+=1;
}

if chodzenie_wstep<=0
{
    sprite_index=chodzenie;
    y+=0;
    typ_chodzenie=round(random(8));
    chodzenie_czas=80+round(random(100));
}
//wybor chodzenia
switch (typ_chodzenie)
{
    case 0:{
            if chodzenie_czas>0
            {
                    chodzenie_czas-=1;
                    sprite_index=nic;
                    y+=0;
                    x+=0;
                    if chodzenie_czas<=0
                    {   
                        typ_chodzenie=round(random(4));
                        chodzenie_czas=80+round(random(100));
                    }
            } 
            } break;
    case 1:{
            if chodzenie_czas>0
            {
                    chodzenie_czas-=1;
                    sprite_index=chodzenie;
                    move_towards_point(hero.x,hero.y,1);
                    if chodzenie_czas<=0
                    {   
                        typ_chodzenie=round(random(4));
                        chodzenie_czas=80+round(random(100));
                    }
            }
            } break;
    case 2:{
            if chodzenie_czas>0
            {
                    chodzenie_czas-=1;
                    sprite_index=chodzenie;
                    move_towards_point(hero.x,hero.y,-1);
                    if chodzenie_czas<=0
                    {   
                        typ_chodzenie=round(random(4));
                        chodzenie_czas=80+round(random(100));
                    }
            }
            } break;
    case 3:{
            if chodzenie_czas>0
            {
                    chodzenie_czas-=1;
                    sprite_index=chodzenie;
                    y+=1;
                    if chodzenie_czas<=0
                    {   
                        typ_chodzenie=round(random(4));
                        chodzenie_czas=80+round(random(100));
                    }
            } 
            } break;
    case 4:{
            if chodzenie_czas>0
            {
                    chodzenie_czas-=1;
                    sprite_index=chodzenie;
                    y-=1;
                    if chodzenie_czas<=0
                    {   
                        typ_chodzenie=round(random(4));
                        chodzenie_czas=80+round(random(100));
                    }
            }
            } break;
            default:     typ_chodzenie=round(random(4));
}

 

a prob z alarmami juz nie podam ;D

 

jezeli ktos napisze mi taki kod koniecznie umieszcze go w kredits, a za pomoc tradycyjnie beda podziekowania dla gmclan - bo przeciez bez was bym sie niczego nie nauczyl i nie zrobil :sp_ike:

Odnośnik do komentarza
Udostępnij na innych stronach

Co to ma być... Oo

 

Jeśli dobrze rozumiem - gościu ma chodzić po kratkach w twoim kierunku (nie podchodząc do ciebie bliżej niż ileśtam)...?

 

Najłatwiej to sprawdzaj, czy wartość bezwzględna różnicy iksów hera i playera jest większa niż igreków, jeśli tak, idź w lewo/prawo (to akurat proste), jeśli nie, idź w górę/dół.

I oczywiście po drodze sprawdzaj, czy przeciwnik nie jest w tej twojej odległości od gracza...

 

Nie wiem, czy to o to chodzi, bo kodowi się dokładnie nie przyglądałem, ale chyba tak... :P

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ę...