Skocz do zawartości
Morro

"Gonienie"

Rekomendowane odpowiedzi

Nie potrafię za cholerę zrobić dobrze to, żeby:

Mob po zobaczeniu biegł do mnie (ciągle collision line jest false bo nic mu nie przerywa) ale jeśli znikne mu z oczu (collision line jet true, bo weszłem za jakąś ścianę) gonił mnie przez np. sekundę po czym rezygnował. Doszłem do czegoś takiego ale to jest stek bzdur ale komuś może pomoże w zrozumieniu.

GML
//STEP

if collision_line(enemx,enemy,o_herohead.x,o_herohead.y,o_wall,false,false)

widzi=0

else

widzi=1

 

if niewidzi=1

if widzi = 1

goni=1

 

 

if niewidzi=0

{

if collision_line(enemx,enemy,o_herohead.x,o_herohead.y,o_wall,false,true)

niewidzi=1

widzi=0

alarm[1]=5

}

 

 

if goni=1

mp_potential_step(o_herohead.x,o_herohead.y,spd-slow,1);

 

//ALARM

if niewidzi=1

{

goni=0

niewidzi=0

}

else

alarm[1]=150

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

GML
if collision_line(enemy.x,enemy.y,hero.x,hero.y,o_wall,1,1)

{

niewidzi = 1;

widzi = 0;

goni = 0;

}

else

{

niewidzi = 0;

widzi = 1;

goni = 1;

}

if goni=1

mp_potential_step(hero.x,hero.y,4,1);

a alarm[0] zostaw jak jest

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

jak przypisujesz te zmienne enemx i enemy?

 

według mnie powinno być tak:

GML
[create]

widzi = false

goni = false

 

[step]

if ( collision_line( x, y, o_herohead.x, o_herohead.y, o_wall, false, false ) > 0 )

widzi = false

else

widzi = true

 

if ( widzi == true ) goni = true

 

if ( goni == true )

{

mp_potential_step( o_herohead.x, o_herohead.y, 3, false )

if ( widzi = false ) if ( alarm[ 0 ] = -1 ) alarm[ 0 ] = room_speed //1sek

}

 

[Alarm0]

goni = false

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

te zmienne są tak

if instance_exists(o_enemy1)

{

enemx=self.x

enemy=self.y

}

ale ten twój sposób nie trybi bo gonią w nieskończoność

a hudego nie przestaje gonić po czasie tylko momentalnie gdy straci z oczu

 

EDIT:

Moja skucha - alarm dałem zamiast 1 to 0 i dlatego nie stopował

EDIT 2 :

działa jak należy , DZIĘKI

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przeczytałem: "Golenie" ;d

 

A ja nie wiem co jest z tym collision_line bo on tu ma ze if collision_line[...] samo a przeciez chyba trzeba dać noone?

Mi ktos kiedys powiedzial ze trzeba noone albo !noone jak sie chce collision_line i inne sprawdzic bo na false i true nie działa.. to czemu jemu działa?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

a czy ja sprawdzam false/true?

collision_line zwraca id obiektu, więc sprawdzam czy wartość jest > 0 bo w innym przypadku wynosiła by -4, czyli Twoje noone

W sumie jeden pies.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×