killhunt Opublikowano 4 Września 2013 Udostępnij Opublikowano 4 Września 2013 Cześć, mam pewien problem. Mam jeden skrypt, dzięki któremu pewien obiekt znika, jeżeli w pobliżu nie ma określonej liczby innych obiektów. Teraz chciałbym dodać do tego skryptu jeszcze jeden warunek, teraz obiekt ma zniknąć, jeżeli w pobliżu nie ma określonej ilości innych obiektów oraz nie porusza się. Wszystko w teorii zrobiłem dobrze, problem w tym, że ten drugi warunek jest pomijany (obiekt się porusza, ale kiedy oddala się od zbioru innych obiektów i tak znika). Na obiekt ten działa fizyka, i nie ma on nadanej żadnej prędkości - porusza się tylko dlatego, że spada, odbija itd. Dlaczego ten warunek jest pomijany? Podam tu skrypt z którego korzystam i prosiłbym o pomoc, co tu zrobić, żeby wszystko poprawnie działało. GML var ilosc=0; with(nazwa_obiektu){ if distance_to_object(other)<125 { ilosc+=1;} } if (ilosc<9){ instance_destroy(); } Z góry dzięki za pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 4 Września 2013 Udostępnij Opublikowano 4 Września 2013 No a gdzie niby jest ten warunek mówiący o nieporuszaniu się? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
killhunt Opublikowano 4 Września 2013 Autor Udostępnij Opublikowano 4 Września 2013 Nie dałem go, dałem czysty skrypt, tu jest ten z warunkiem: GML var ilosc=0; with(nazwa_obiektu){ if distance_to_object(other)<125 { ilosc+=1;} } if (hspeed==0 || vspeed==0) { if (ilosc<9){ instance_destroy(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 4 Września 2013 Udostępnij Opublikowano 4 Września 2013 Sprawdź w debuggerze wartości vspeed i hspeed, przed zniknięciem obiektu. Poza tym w warunku użyłeś sumy logicznej, no a może zdarzyć się sytuacja, że obiekt będzie poruszał się w jednej płaszczyźnie i wtedy vspeed lub hspeed będzie wynosiło 0 (kod się wykona), a w spoczynku tak naprawdę nie będzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 4 Września 2013 Udostępnij Opublikowano 4 Września 2013 Jeżeli obiekt nie porusza się, to x = xprevious i y = yprevious, niezależnie od tego, czy ma jakąś prędkość, czy przesunięcie było skokowe. A zatem: GML var ilosc=0; with(nazwa_obiektu) if distance_to_object(other)<125 { ilosc+=1; } if (xprevious = x)&&(yprevious = y)&&(ilosc < 9) { instance_destroy(); } Twój warunek nie działałby jeśli, korzystając z hspeed i vspeed, poruszałbyś się tylko w jednej osi. Dodam, że im więcej obiektów, tym dłużej ten skrypt się wykonuje, nie polecam więc wykonywania go 60 razy na sekundę, przy ~60 obiektach mogłoby przycinać na słabszych komputerach. Ewentualnie użyj jakichś technik optymalizacyjnych, np. dezaktywuj obiekty poza obszarem ekranu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 4 Września 2013 Udostępnij Opublikowano 4 Września 2013 moze sproboj odwrotnie: jezeli nasz objekt=o_kolo musi miec do zicia kilka obiektow=o_kwadrat to: o_kwadrat moze mowic o_kolo ze jest v poblizu v eventu(begin STEP). GML if (distance_to_object(o_kolo)<_max_odleglosc) {o_kolo._ilocs_kwadratow+=1; }; o_kolo natomisat v eventu(STEP) GML if (_ilocs_kwadratow<_min_ilosc_kvadratow && xprevious==x && yprevious==y) {instance_destroy(); } else {_ilocs_kwadratow=0; }; co to robi: 1, o_kolo zeruje ilocs_kwadratow v event create 2, kazdy o_kwadrat zapisuje sie do o_kolo jesli jest zablisko v event begin STEP 3, o_kolo v event STEP nisci sie jesli niema dosyc p_kwadrat albo o_kolo sie rusza, jestli nie to zeruje ilocs_kwadratow dla novego begin STEP mozna uzyc sztuczky z vykonaniem tego kodu raz na sekunde albo jaksi tam maly czas. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 5 Września 2013 Administratorzy Udostępnij Opublikowano 5 Września 2013 jak się używa funkcji z mp_ to hspeed i vspeed sie nie zmieniają 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ę