Skocz do zawartości

Zablokowane Wybieranie odpowiedniego celu


Pablo-GM

Rekomendowane odpowiedzi

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 :

przedstawienie.png

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

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

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

Ż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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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