Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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?

Opublikowano

Podał bym, ale za dużo z tym zachodu bo mam to na drugim kompie... Zanim znajdę pendrive'a, to prawdopodobnie minie trochę czasu, więc nacieszcie się opisem. Właśnie dlatego napisałem to w tak szczegółowy sposób.

Opublikowano

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);

Opublikowano

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

Opublikowano

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

Opublikowano

O to to juz snake'a popros

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