Skocz do zawartości

Kolizja z modelem 3D


CTRL

Rekomendowane odpowiedzi

to mój pierwszy post więc witam wszystkich!

od ok. 2 miesięcy bawie sie GM'em. forum obserwuje od dawna a teraz jestem z wami.

 

zabrałem sie za 3D. ale nie wiem jak zrobić z kolizje z modelem. ;/ używałem opcji SZUKAJ.

prosze was o pomoc. pozdro

Odnośnik do komentarza
Udostępnij na innych stronach

z jakąś nadzieją zobaczyłem pasek wczytywania i przebiłem czołg na wylot... dupa... dałem sprajta :D i kolizje playera z czołgem i speed = 0...

już kilka dni temu sprawdziłem wszystkie opcje jakie przyszły mi na myśl :crying: a ten DLL to bardziej PRO :sp_ike:

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz też zrobić coś w rodzaju BBox* każdego z obiektów. Przykładowo:

*Bounding Box - prostopadłościan, którego ściany dotykają krańcowych części obiektu (patrz: właściwości sprite'a)

 

GML (create)
bbox_xmin=-10;

bbox_xmax=10;

bbox_ymin=-10;

bbox_ymax=10;

bbox_zmin=-10;

bbox_zmax=10;

// mówimy tutaj o sześcianie 20x20x20

// te zmienne muszą być w każdym sprawdzanym obiekcie

// PS: zakładam, że posiadasz zmienną "z".</span>

 

A potem: (obj2 to obiekt, z którym sprawdzamy kolizję)

GML (step)
if ((x+bbox_xmin<obj2.x+obj2.bbox_xmax

|| x+bbox_xmax>obj2.x+obj2.bbox_xmin)

&& (y+bbox_ymin<obj2.y+obj2.bbox_ymax

|| y+bbox_ymax>obj2.y+obj2.bbox_ymin)

&& (z+bbox_zmin<obj2.z+obj2.bbox_zmax

|| z+bbox_zmax>obj2.z+obj2.bbox_zmin))

{

... // akcja kolizji

}

 

Jedyny problem w tym, że kolizje będą odbywały się, gdy nie obiekty, ich "prostopadłościany" będą się dobijać. Kolizji kul na przykład tak nie zrobisz. :)

Odnośnik do komentarza
Udostępnij na innych stronach

ten kod załapałem. ktoś powiedział ze kolizja z 3D to nie taki "orzeszek"... czyli nie za łatwe ;/

ale jakoś ten kod nie zadziałał... właściwie to ja gówno wiem na temat tej kolizji a że kombinuje tydzień to piszę do was :D

zrobiłem tak jak kazałeś :( nic tu kurde nie działa!

 

// PS: zakładam, że posiadasz zmienną "z".

posiadam, z = 0 czyli "czołg" stoi na ziemi...

PS. nie wiem co z tym x min 10 x max 10... nie pasuje ale nie wiem co... a nieważne... :D

 

E@E: powiedzcie mi teraz czemu chodze tylko na boki a nie w przód i w tył!! kurde..................

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if z<=modelik.zz+277{

x = xprevious;

y = yprevious;

if (abs(hspeed) >= abs(vspeed) && not place_meeting(x+hspeed,y,modelik))

{

x += hspeed; exit;

}

if (abs(vspeed) >= abs(hspeed) && not place_meeting(x,y+vspeed,modelik))

{

y += vspeed;

exit;

}

speed = 0;

}

ja mam to tak zrobione, znalazłem to w jednym przykładzie bo też sobie nie mogłem poradzić :)

aha musisz mieć sprite wielkości modelu a w obiekcie musisz mieć zaznaczone solid

ta liczba 277 to wysokość modelu, a zz to to samo co z

EDIT: modelik to oczywiście nazwa obiektu z którym kolidujesz, a kod dajesz w evencie colission

Odnośnik do komentarza
Udostępnij na innych stronach

jak mam zmieżyć? na oko bedzie dobrze?

 

E@E yeaaaaa udało sie!! dzięki wam wszystkim! to było trudne zagadnienie a odpowiedź banalna :D dzieki dzięki dzięki!

nareszcie Wojna O Sprawiedliwość ruszyła!! dodam 1% więcej....

mały krok dla GM'a, wielki krok dla WOS'u!

|L

|O

|O

|K

v

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