Skocz do zawartości

odbicie ala bilardowe kulki


Rekomendowane odpowiedzi

dzien dobry. Chciałbym, żeby moje okrągłe obiekty zderzaly sie ze soba.. fizycznie? Chciałbym uwzglednic dobre direction, a takze speed - kula, ktora ledwo muśnie drugą skręca tylko lekko i traci tylko trochę speeda. Mysle nad tym juz dlugo i chyba nie wymyśle :P Masy kul sa takie same, promienie tez.

Z gory dzieki na pomoc :)

 

e: ten temat to moze do pytan zaawansowanych...

Odnośnik do komentarza
Udostępnij na innych stronach

Pytania zaawansowanych polegają na tym, że dajesz część swojego kodu, a my mówimy gdzie masz błąd lub co poprawić.
Pytania zaawansowanych polegają na tym, że ktoś zgłasza problem wymagający biegłej wiedzy z zakresu GM jak i z innych dziedzin.

 

https://gmclan.org/up152_14_bilard.html

Masz, 20 minut pracy. Bardzo zubożona wersja. Nawet z błędem. Kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

no wiesz co, takie cos rozwiazales tak?

direction = point_direction( a.x, a.y, b.x, b.y );

force = point_distance( 0, 0, lengthdir_x( a.force, a.direction ) + lengthdir_x( b.force, b.direction ),

lengthdir_y( b.force, b.direction ) + lengthdir_y( a.force, a.direction ) );

 

a.direction = direction + 180;

a.force = force * 0.98;

 

b.direction = direction;

b.force = force * 0.98;

Odnośnik do komentarza
Udostępnij na innych stronach

Trzeba by jeszcze uwzględnić kolizje dla siły > 20, wektor siły kuli przy kolizji i takie tam.

 

Ale w sumie masz rację, poprawię i zrobię z tego przykład, później wrzucę do zasobów. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Nie do końca. Akurat tutaj nie musimy implementować pełnej fizyki, wystarczy zubożona, ale dokładniejsza. Precyzując, musimy rozwiązać taki problem:

problem_3_kul.png

Mamy 3 kule. Intuicja podpowiada nam, że zielona i niebieska powinny się odbić, ale w tym co obecnie napisałem odbiją się zielona i żółta. Dlaczego? Bo skrypt w ogóle nie sprawdza czy przypadkiem po drodze nie nastąpi kolizja zielonej z niebieską tylko przeskakuje o wektor i dopiero wtedy sprawdza czy nie nastąpiła kolizja. Większość silników fizycznych rozwiązuje to po prostu większym próbkowaniem, np. 10 razy w ciągu stepa. My tego nie potrzebujemy, w końcu nie operujemy na złożonych figurach tylko na... okręgach.

 

Swoją drogą, nie wiem czy chce mi się to pisać w GMie - bez prostych struktur to niesamowite pieprzenie się, a używanie DSów... no proszę.

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