Skocz do zawartości

RagDoll


Exigo

Rekomendowane odpowiedzi

Więc tak. Jak się po tytule domyślacie, chodzi mi o twz. "Szmacianą Lalkę" drodzy użytkownicy.

Moja "lalka", składa się z punktów.... głowy, obojczyka, gaci, łokci oraz kolan. Jak widać, brakuje tutaj nadgarstków i stóp.. ale doszedłem do wniosku iż poco robić wszystko skoro nawet nie wiemy cy zadziała... Ale przejdźmy teraz do sedna sprawy bo po to przecież pisze ten tekst, prawda?

Więc, poszczególne elementy ciała reagują między sobą, w ten sposób, że trzymają pomiędzy sobą dystans, czyli np. głowa "trzyma się" obojczyka itd. (nie uwzględniamy kąta nachylenia). Postanowiłem zrobić grawitacje... Działa, wszystko pinkne. Ale brakuje najbardziej elementarnej rzeczy... Bowiem chodzi mi o reakcje z otoczeniem. Tu zrobiłem jakąś przeszkodę (kwadrat dokładnie)... dodałem jakąś badziewną(zaraz powiem czemu) interakcję z tą przeszkodą, i dupa, nie działa... lalka dosłownie przelatuje przez przeszkodę.

W czym problem?... załóżmy że to wy robicie RagDoll, to co bierzecie pod uwagę?.. Może coś przeoczyłem?

Odnośnik do komentarza
Udostępnij na innych stronach

Bez kolidowania.... po prostu pokazuję, na czym się opiera moja lalka.

Information about object: lud

 

Sprite: <no sprite>

Solid: false

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

 

Create Event:

execute code:

 

glowa_x = x;

glowa_y = y-30;

 

obojczyk_x = x;

obojczyk_y = y;

 

le_lokiec_x = x-40;

le_lokiec_y = y;

 

pr_lokiec_x = x+40;

pr_lokiec_y = y;

 

gacie_x = x;

gacie_y = y+30;

 

le_kolano_x = x-30;

le_kolano_y = y+70;

 

pr_kolano_x = x+30;

pr_kolano_y = y+70;

 

 

Step Event:

execute code:

 

// Głowa z obojczykiem.

glowa_x += lengthdir_x(point_distance(glowa_x,glowa_y,obojczyk_x,obojczyk_y)-15,point_direction(glowa_x,glowa_y,obojczyk_x,obojczyk_y));

glowa_y += lengthdir_y(point_distance(glowa_x,glowa_y,obojczyk_x,obojczyk_y)-15,point_direction(glowa_x,glowa_y,obojczyk_x,obojczyk_y));

// Gacie z obojczykiem.

gacie_x += lengthdir_x(point_distance(gacie_x,gacie_y,obojczyk_x,obojczyk_y)-15,point_direction(gacie_x,gacie_y,obojczyk_x,obojczyk_y));

gacie_y += lengthdir_y(point_distance(gacie_x,gacie_y,obojczyk_x,obojczyk_y)-15,point_direction(gacie_x,gacie_y,obojczyk_x,obojczyk_y));

// Lewy łokiec z obojczykiem.

le_lokiec_x += lengthdir_x(point_distance(le_lokiec_x,le_lokiec_y,obojczyk_x,obojczyk_y)-30,point_direction(le_lokiec_x,le_lokiec_y,obojczyk_x,obojczyk_y));

le_lokiec_y += lengthdir_y(point_distance(le_lokiec_x,le_lokiec_y,obojczyk_x,obojczyk_y)-30,point_direction(le_lokiec_x,le_lokiec_y,obojczyk_x,obojczyk_y));

// Prawy łokieć z obojczykiem.

pr_lokiec_x += lengthdir_x(point_distance(pr_lokiec_x,pr_lokiec_y,obojczyk_x,obojczyk_y)-30,point_direction(pr_lokiec_x,pr_lokiec_y,obojczyk_x,obojczyk_y));

pr_lokiec_y += lengthdir_y(point_distance(pr_lokiec_x,pr_lokiec_y,obojczyk_x,obojczyk_y)-30,point_direction(pr_lokiec_x,pr_lokiec_y,obojczyk_x,obojczyk_y));

// Lewe kolano z gaciami.

le_kolano_x += lengthdir_x(point_distance(le_kolano_x,le_kolano_y,gacie_x,gacie_y)-30,point_direction(le_kolano_x,le_kolano_y,gacie_x,gacie_y));

le_kolano_y += lengthdir_y(point_distance(le_kolano_x,le_kolano_y,gacie_x,gacie_y)-30,point_direction(le_kolano_x,le_kolano_y,gacie_x,gacie_y));

// Prawo kolano z gaciami.

pr_kolano_x += lengthdir_x(point_distance(pr_kolano_x,pr_kolano_y,gacie_x,gacie_y)-30,point_direction(pr_kolano_x,pr_kolano_y,gacie_x,gacie_y));

pr_kolano_y += lengthdir_y(point_distance(pr_kolano_x,pr_kolano_y,gacie_x,gacie_y)-30,point_direction(pr_kolano_x,pr_kolano_y,gacie_x,gacie_y));

 

 

Draw Event:

execute code:

 

// Rysujemy linie pomiędzy punktami.

draw_line(glowa_x,glowa_y,obojczyk_x,obojczyk_y);

draw_line(obojczyk_x,obojczyk_y,le_lokiec_x,le_lokiec_y);

draw_line(obojczyk_x,obojczyk_y,pr_lokiec_x,pr_lokiec_y);

draw_line(obojczyk_x,obojczyk_y,gacie_x,gacie_y);

draw_line(gacie_x,gacie_y,le_kolano_x,le_kolano_y);

draw_line(gacie_x,gacie_y,pr_kolano_x,pr_kolano_y);

// Rysujemy punkty nawigacyjne.

draw_sprite(s,0,glowa_x,glowa_y);

draw_sprite(s,0,obojczyk_x,obojczyk_y);

draw_sprite(s,0,le_lokiec_x,le_lokiec_y);

draw_sprite(s,0,pr_lokiec_x,pr_lokiec_y);

draw_sprite(s,0,gacie_x,gacie_y);

draw_sprite(s,0,le_kolano_x,le_kolano_y);

draw_sprite(s,0,pr_kolano_x,pr_kolano_y);

Odnośnik do komentarza
Udostępnij na innych stronach

hehe, a ja juz mialem dac xenonowego ragdolla, a tu maxpayn szybszy ;P no nic

Odnośnik do komentarza
Udostępnij na innych stronach

A zostawie sobie na razie ;p dopracuje i moze do jakiejs gierki niebawem dodam ;p

Odnośnik do komentarza
Udostępnij na innych stronach

O to to juz snake'a popros

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