Skocz do zawartości

Półkole kolizyjne


Makary155

Rekomendowane odpowiedzi

W jaki sposób można sprawdzić czy w półkolu jest jakiś obiekt? Chodzi mi o taką sytuację:

vr3kfa.jpg

 

Próbowałem tak:

GML
o=instance_nearest(x,y,wrog);

dir=point_direction(x,y,o.x,o.y);

 

if point_distance(x,y,o.x,o.y)<100 and direction-dir>=90 or direction-dir<=180

 

{

 

//odbierz hp

}

 

i niezbyt to działa, tylko gdy wróg jest po lewej stronie i w dodatku obrywa ten który jest najbliżej.

Odnośnik do komentarza
Udostępnij na innych stronach

przerobilem troche stary stary dobry przyklad zalegajacy na dysku. z polem widzenia to bylo chyba. dodalem komentarze jakies:

https://gmclan.org/up2621_12_polkole.html

w draw:

 

GML
draw_sprite_ext(sprite_index,0,x,y,1,1,direction,c_white,1); //rysuje sprita

//poniżej rysuje to całe pole widzenia

var dx; var dy; var x2; var y2;

draw_primitive_begin(pr_trianglefan)

draw_vertex_color(x,y,c_yellow,1);

 

for (i=-90; i<=90; i+=90*0.1) //- kat 90* w te i we wte da Ci półkole

{

x2 = x+ 200 * cos(degtorad(direction+i)) //długość promienia twojego półkola

y2 = y- 200 * sin(degtorad(direction+i)) //długość promienia twojego półkola

 

// tu deklarujemy sytuacje gdy kogoś spotkamy i bedzie w tym półkolu

first_instance = collision_line(x, y, x2, y2, all, true, true);

if first_instance != noone

{

dx = x2 - x

dy = y2 - y

while (abs(dx) >= 1 or abs(dy) >= 1)

{

dx /= 2;

dy /= 2;

instance = collision_line(x, y, x2-dx, y2-dy, all, true, true);

if instance != noone

{

first_instance=instance

x2 -= dx;

y2 -= dy;

}

}

}

if place_meeting(x2,y2,obj_enemy)=true then

{

// tu dajesz akcje np:

with (obj_enemy) hp-=1;

}

draw_vertex_color(x2,y2,c_white,0.5)

}

draw_primitive_end();

 

jak coś niejasne to krzycz.

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