eXcLiFe Opublikowano 30 Kwietnia 2006 Udostępnij Opublikowano 30 Kwietnia 2006 Witam Mam dylemat mianowicie nie wiem w jaki sposób mogę zrobić coś takiego jak na poniższym przykładzie Mianowice na samej górze mamy standardowy sposób strzelania wykorzystując Speed jest to przeskok o daną ilość pixeli tak więc jeśli przeciwnik ustawi się tak że pocisk go akurat ominie to nic się nie wydarzy tak jakby przeciwnik ten nie istniał po środku mamy sposób dokładniejszy który mnie właśnie interesuje mianowice jest to metoda w której są sprawdzane wszystkie pixele w danym koncie (w ciągu ułamka sek. przelatuje przez całą plansze do czasu uchwycenia celu) i jeśli zostanie wykryta przeszkoda zostają wszczęte odpowiednie funkcje na samym dole mamy identyczną zdarzenie tylko że na przeszkodzie stoi ściana i cel nie może zostać trafiony gdyż ściana blokuje pociski I moje pytanie brzmi czy to się robi na collision_line czy na jakiejś innej metodzie ?? ale i tak w obu przypadkach proszę o przykład Z góry dzięki Pozdro eXcLiFe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Woock Opublikowano 30 Kwietnia 2006 Udostępnij Opublikowano 30 Kwietnia 2006 Jak nie chcesz skomplikowanych metod to mozesz zredukowac predkosc pocisku ponizej szerekosci scianki i stosownie zwiekszyc room_speed. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mif@ Opublikowano 1 Maja 2006 Udostępnij Opublikowano 1 Maja 2006 Użyj pętli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
eXcLiFe Opublikowano 1 Maja 2006 Autor Udostępnij Opublikowano 1 Maja 2006 @Woock nie interesuje mnie taka metoda bardziej jestem skłonny użyć pętli w taki sposób (jest to przykład z fps'a) var xx, yy, ii; xx = global.cx; yy = global.cy; repeat (50) { xx += 4*global.ccos; yy -= 4*global.csin; ii = instance_position(xx,yy,obj_wall_basic); if (ii == noone) { ii = instance_position(xx,yy,obj_monster_basic); if (ii == noone) continue; with (ii) {livess-=powerw-(distance_to_object(obj_player)/80); repeat (random(4)+6) {instance_create(xx,yy,obj_krew_draw);}}; break; } if instance_position(xx,yy,obj_plant_basic) continue; if (ii.object_index == obj_paka) || (ii.object_index == obj_beka) with (ii) livess-=powerw-(distance_to_object(obj_player)/80); repeat (random(4)+6) {instance_create(xx,yy,obj_odlamekpaki);; break; Ale znowu ten przykład powoduje to że pocisk przelatuje przez ścianę i trafia w cel. Nie bardzo wiem co jest nie tak ... więc jeśli ktoś zna inną metodę która działa lepiej, a w podobny sposób proszę o pomoc ... Z góry dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 1 Maja 2006 Udostępnij Opublikowano 1 Maja 2006 Heh, pomyśleć tylko :]: mc = cos(direction/180*pi)*speed; ms = -sin(direction/180*pi)*speed; //Kolizja: Sciana if collision_line(x,y,x+mc,y+ms,ob_sciana,1,1) { instance_destroy(); } //Kolizja: Przeciwnik i = collision_line(x,y,x+mc,y+ms,ob_przeciwnik,1,1) if i { instance_destroy(); i.hp -= 10; } //Itd, itd ... 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ę