Skocz do zawartości

XeDI Ragdoll


Rekomendowane odpowiedzi

Witam, przedstawiam Wam przykład Ragdoll w jego wstępnej wersji (W przyszłości będą poprawki i udoskonalenia).

 

Lewym Przyciskiem Myszy wskazujemy lalce gdzie ma lecieć.

 

https://gmclan.org/up1105_4_XeDI_Ragdoll.html

Odnośnik do komentarza
Udostępnij na innych stronach

Nom, kodu "sporo" bo w koncu to nie jest jedna funkcja rób_lalke() ale nie jest to az tak trudny kod.

 

co prawda w samym gml da sie to zrobic, na samych lengthdirach i i collision_circle ;P

Chetnie zobacze ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Zajrzałem do kodu i aż tak nieludzko on nie wygląda (choć brakuje mi tu średników, to przez pisanie w C). Gdyby zrozumieć wszystkie funkcje Xenona, robota mogłaby być łatwa. Ze względu na brak dobrej grawitacji dam tylko 3/5.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
draw_primitive_begin_texture(pr_trianglefan,sprite_get_texture(argument0,argument1))

temp_x=argument2-sprite_get_xoffset(argument0)+temp_s1

temp_y=argument3-sprite_get_yoffset(argument0)+sprite_get_height(argument0)/argument5*i

draw_vertex_texture_color(temp_x,temp_y,0,1/argument5*(i),argument6,argument7)

temp_x=argument2-sprite_get_xoffset(argument0)+sprite_get_width(argument0)+temp_s1

temp_y=argument3-sprite_get_yoffset(argument0)+sprite_get_height(argument0)/argument5*i

draw_vertex_texture_color(temp_x,temp_y,1,1/argument5*(i),argument6,argument7)

temp_x=argument2-sprite_get_xoffset(argument0)+sprite_get_width(argument0)+temp_s2

temp_y=argument3-sprite_get_yoffset(argument0)+sprite_get_height(argument0)/argument5*(i+1)

draw_vertex_texture_color(temp_x,temp_y,1,1/argument5*(i+1),argument6,argument7)

temp_x=argument2-sprite_get_xoffset(argument0)+temp_s2

temp_y=argument3-sprite_get_yoffset(argument0)+sprite_get_height(argument0)/argument5*(i+1)

draw_vertex_texture_color(temp_x,temp_y,0,1/argument5*(i+1),argument6,argument7)

 

(...)

 

xenon_set_body_skeleton_line(corp,0,0,0,32,argument2,-90,-1,0)

xenon_set_body_skeleton_line(head,0,0,0,24,0,0,corp,1)

xenon_set_body_skeleton_line(lhand0,0,0,0,16,0-hand0_angle,90,corp,1)

xenon_set_body_skeleton_line(rhand0,0,0,0,16,180-hand0_angle,90,corp,1)

xenon_set_body_skeleton_line(lhand1,0,0,0,16,-90,90-10-hand1_angle,lhand0,1)

xenon_set_body_skeleton_line(rhand1,0,0,0,16,90,90-10+hand1_angle,rhand0,1)

xenon_set_body_skeleton_line(lhand2,0,0,0,24,0,20+corp_angle*2,lhand1,1)

xenon_set_body_skeleton_line(rhand2,0,0,0,24,0,20+corp_angle*2,rhand1,1)

xenon_set_body_skeleton_line(lleg0,0,0,0,8,0+leg0_angle,90,corp,0)

xenon_set_body_skeleton_line(rleg0,0,0,0,8,180+leg0_angle,90,corp,0)

xenon_set_body_skeleton_line(lleg1,0,0,0,24,90,90-leg1_angle,lleg0,1)

xenon_set_body_skeleton_line(rleg1,0,0,0,24,-90,90+leg1_angle,rleg0,1)

xenon_set_body_skeleton_line(lleg2,0,0,0,24,0,0+leg2l_angle,lleg1,1)

xenon_set_body_skeleton_line(rleg2,0,0,0,24,0,0+leg2r_angle,rleg1,1)

 

prostykodsc5.jpg

 

To są normalnie mega-podstawy :P

 

EDIT:

 

Ale dużo się napracowałeś, więc 5/5 :) Tylko troszkę ten ludzik sztywny jakiś :D

Odnośnik do komentarza
Udostępnij na innych stronach

Ze względu na brak dobrej grawitacji

Wlasnie, w XenoNie najwiekszy problem to brak wbudowanej gravitacji, nie zrobilem jeszcze tego typu elementow, przez co gravitacja musi byc kodowana jak na razie ;/

Odnośnik do komentarza
Udostępnij na innych stronach

Efekt szczerze mówiąc słaby ;/

Rzucam postać wprawo, ta nagle leci w dół, głowa jak i inne części ciała nachodzą na przeszkody.

 

A do tego niezwykle ekscytujący kod ^_^

 

lol, to nie jest czarna magia tylko tak zwane prawdziwe kodzenie, to nie jest trudne, lecz dlugie... efekt fajny, co prawda w samym gml da sie to zrobic, na samych lengthdirach i i collision_circle ;P

4/5

OMG, WTF, LOL, ROTFL...

Nie chce mi się dużo pisać, także tylko troszkę napiszę...

 

1. Pamiętasz temat o xenonowych skrzynkach? Wszyscy pisali, ze kod jest trudny, ty napisałeś, że jest prosty, i sam dla jaj sobie poprawiłeś ten przykład, czego o dziwo nawet PsichiX nie zrobił.

Ja powiedziałem, że kitujesz, a jeśli nie kitujesz, to to udowodnij w prosty sposób.

Ty odpisałeś, że nie będziesz podawał nikomu gotowego kodu...

 

Podobnie teraz.

Nie masz zielonego pojęcia o tym kodzie, nawet się mu dłuej nie przyglądałeś, a znawcę udajesz...

 

2. A moją tezę potwierdza fakt,. że uważasz, że da się to zrobić na colision_circle() i lengthdirach.

Kur...de, powodzenia.

 

PS: Zapewne już nic nie odpiszesz ^_^

A jak chcesz odpisywać, to dwaj swoją wizje zrobienia tego na collision_circle()

Odnośnik do komentarza
Udostępnij na innych stronach

Ja powiem tak: chrzanicie. Jeżeli korzysta się z dll'a czy jakiegoś gotowego silnika ze skryptami, to nie rozczula się na temat tego co jest w skryptach i jaki to o jezus skomplikowany kod. Wtedy interesuje cię tylko obsługa tego, czyli to co jest w obiektach. A tu to zaledwie kilka/naście linii kodu, w dodatku wszystkie funkcje wypełnia się stałymi. Przecież gdyby trzeba było rozumieć kod ze skryptów to by się to wszystko mijało z celem (?) ;/

Odnośnik do komentarza
Udostępnij na innych stronach

Rzucam postać wprawo, ta nagle leci w dół, głowa jak i inne części ciała nachodzą na przeszkody.

Brak wbudowanej grawitacji, nie ma wlaczonego trybu bezwładności ruchu, nachodzą na przeszkody bo to wina kodowanej grawitacji oraz tego że przeszkody naciskają z kilku stron na daną substancję a ona sie nie plaszczy, tylko stara sie odpychac przeszkody z ktorymi koliduje,a le poniewaz maja mase kilkaset tys. razy wieksza niz lalki to lalka wiele nie zdziala ;p

Odnośnik do komentarza
Udostępnij na innych stronach

ee no a mi sie efekt ######ście podoba, tzn fakt faktem lalki nie da sie rzucić bo zawsze spada w dół, a kolana i łokcie zginają się w obydwie strony - ale i tak ten przykład na mnie największe wrażenie zrobił z wszystkich xenonowych przykładów. dobre to jednym słowem.

Odnośnik do komentarza
Udostępnij na innych stronach

PS: Zapewne już nic nie odpiszesz happy.gif

Mylisz sie! ha!

To nie jest nic trudnego no popatrz:

GML (0)
corp0=XeSubstanceCreate() tworzysz substancje

XeSubstanceSetPosition(corp0,x,y) zmieniasz pozycje

XeSubstanceSetSolid(corp0,XE_TRUE) "twarda"

XeSubstanceSetObject(corp0,id) przypisujesz objekt

XeSubstanceSetRange(corp0,32) range czyli... taki promien

XeSubstanceSetMass(corp0,1000) masa kazdy wie;]

...

...

 

cf_corp0_corp1=XeCovalenceForceCreate() tworzysz sile miedzyczasteczkowa

XePhysicSet(XE_COVALENCE_FORCE,cf_corp0_corp1)

XeCovalenceForceSetForce(XE_NULL,32+24) sila

XeCovalenceForceSetResilience(XE_NULL,1)

XeCovalenceForceSetSubstance(XE_NULL,XE_COVALENCE_FORCE_SUBSTANCE_1,corp0) laczysz substance czasteczkami, trudne... <_<

XeCovalenceForceSetSubstance(XE_NULL,XE_COVALENCE_FORCE_SUBSTANCE_2,corp1) ^

 

step;

corp0_x=XeSubstanceGet(XE_NULL,XE_SUBSTANCE_X)

corp0_y=XeSubstanceGet(XE_NULL,XE_SUBSTANCE_Y)

pobierasz pozycje

 

 

XeSubstanceSetPosition(XE_NULL,corp0_x,corp0_y)

zmiana pozycji blabla

łooo rzeczywiście czarna magia lol.

to nie trudne, wręcz banalne, tylko trzeba duuuużo kodu... czytał ktoś chociaż dokumentację?

PS: na początku przyznam, że uważałem, że Xenon jest trudny, przeczytałem dokumentacje raz, drugi raz, potem przejrzałem przykłady, zrobiłem coś sam i się nauczyłem, a wy lenie (xD) byście gotowca chcieli...

 

byś PsichiX lepiej zrobił jakąs super wypasioną gre

A 2012? poczekaj już gra ładnie wygląda :P

Odnośnik do komentarza
Udostępnij na innych stronach

Hehehehe...

Powiedzieć, co robi która funkcja po ich nazwach to se może ktoś, kto od pół godziny ma kontakt z GM'em, a zna podstawy angielsksiego (lub ma pod ręką słownik).

 

Nie wymiguj się - miałeś poprawić przykład skrzynek - przecież sam go dla siebie w chwilkę poprawiłeś.

Może i za chwilę poprawisz ten przykład - bo to prawda, jakby komuś bardzo zależało się "wgłębić" w ten kod, to by go zrozumiał. A przynajmniej umiał dorobić "kółka"...

 

A nie to miałeś zrobić... napisałeś, że można sobie takie coś zrobić w prosty sposób za pomocą lengthdir'ów i collision_circle().

I to właśnie TO miałeś zrobić - a nie tłumaczyć mi kod, który każdy znający podstawy angielskiego może sobie bez problemu przetłumaczyć.

 

A, i przyznaj się - wcale nie poprawiłeś sam dla siebie przykładu ze skrzynkami... :)

Mimo, że tak napisałeś...

 

PS: Nie, żeby to był spam - my tu w sumie na temat gadamy :P

Wszystko o możliwościach i zrozumiałości kodu XenoNa... :D

Odnośnik do komentarza
Udostępnij na innych stronach

Hehehehe...

Powiedzieć, co robi która funkcja po ich nazwach to se może ktoś, kto od pół godziny ma kontakt z GM'em, a zna podstawy angielsksiego (lub ma pod ręką słownik).

Nie tak zawsze...

Nie wymiguj się - miałeś poprawić przykład skrzynek - przecież sam go dla siebie w chwilkę poprawiłeś.

Może i za chwilę poprawisz ten przykład - bo to prawda, jakby komuś bardzo zależało się "wgłębić" w ten kod, to by go zrozumiał. A przynajmniej umiał dorobić "kółka"...

wystarczy dodać 4 siły międzycząsteczkowe <_<

A nie to miałeś zrobić... napisałeś, że można sobie takie coś zrobić w prosty sposób za pomocą lengthdir'ów i collision_circle().

I to właśnie TO miałeś zrobić - a nie tłumaczyć mi kod, który każdy znający podstawy angielskiego może sobie bez problemu przetłumaczyć.

Narysuj se lalkę, każdy punkt, to oddzielny objekt, w stepie kontrolera łączysz punkty, tą samą odległością, i w każdym punkcie robisz collision_circle, ze wszystkimi solidami.

A, i przyznaj się - wcale nie poprawiłeś sam dla siebie przykładu ze skrzynkami... :)

Mimo, że tak napisałeś...

Poprawiłem, ale dużo rzeczy trzeba było pomieniać.

PS: Nie, żeby to był spam - my tu w sumie na temat gadamy :P

Wszystko o możliwościach i zrozumiałości kodu XenoNa... :D

Racja ;p
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ę...