Skocz do zawartości

move_bounce_solid()


Threef

Rekomendowane odpowiedzi

Trochę w to nie wierzę, ale muszę napisać temat w tym dziale.

 

Potrzebuję wiedzieć co jest wewnątrz funkcji move_bounce_solid(). Starałem się przeszukać internet, ale bez większego sukcesu.

 

Zazwyczaj używałem czegoś takiego, ale tym razem się nie sprawdza.

GML
if(abs(vspeed)<abs(hspeed))

{

hspeed*=-1

}

else

{

vspeed*=-1

}

Odnośnik do komentarza
Udostępnij na innych stronach

Cóż, ten kod na pewno nie pokrywa zachowania w kątach podzielnych przez 45 i niepodzielnych przez 90, gdzie abs(hspeed) = abs(vspeed).

 

Pod kątem 45 stopni zderzenie z obiektem nad obiektem odbijającym zmniejszy kąt o 90 stopni, podczas gdy zderzenie następuje z obiektem po prawej kąt zwiększa się o 90 stopni.

Innymi słowy w pierwszym przykładzie zmienia sie vspeed, a w drugim przykladzie zmienia sie hspeed, chociaz w obu przypadkach jest ten sam kąt (45) i te same hspeed,vspeed.

 

To co podales moze sie przydac na wszystkie wartosci rozne od 45,135, 225 i 315. Dla tych 4 kątów spróbuj ręcznie napisać zachowanie (niby na wpół z dupą ale powinno działać).

Odnośnik do komentarza
Udostępnij na innych stronach

Wydaje sie dzialac w stepie...

 

GML
var o = instance_place(x+(hspeed*2),y+(vspeed*2),SolidParent);

if o

{

if y > o.y+o.sprite_height

|| y+sprite_height < o.y // Vertical change

{

vspeed*=-1;

}

else

{

hspeed*=-1;

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Okazuje się że najbliższym rozwiązaniem jest:

GML
if(!place_free(x+hspeed,y))

{

hspeed*=-1

}

if(!place_free(x,y+vspeed))

{

vspeed*=-1

}

:huh: Doszedłem do tego po jakiś 16 godzinach dłubania.

 

Teraz zauważyłem że Huder podał to rozwiązanie. To tylko potwierdza te rozwiązanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Ma i jest to argument tej funkcji. Wymaga on oczywiście aby obydwa sprite miały też PCC.

 

Ale mi chodzi o najprostsze rozwiązanie dotyczące AABB, bo zauważyłem że ta funkcja zachowywała się inaczej (lepiej) niż spodziewałem się. Dlatego drążę i próbuję zrozumieć.

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