Makary155 Opublikowano 17 Stycznia 2010 Udostępnij Opublikowano 17 Stycznia 2010 W jaki sposób można sprawdzić czy w półkolu jest jakiś obiekt? Chodzi mi o taką sytuację: 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 Więcej opcji udostępniania...
don_soyer Opublikowano 17 Stycznia 2010 Udostępnij Opublikowano 17 Stycznia 2010 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 Więcej opcji udostępniania...
Dawidds Opublikowano 17 Stycznia 2010 Udostępnij Opublikowano 17 Stycznia 2010 Najprościej - narysuj sprite półkola, i sprawdzaj z nim kolizje (ew. z odpowiednio zeskanowanym) :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę