Skocz do zawartości

Ultimate3d - wykrycie kolizji


Purepain

Rekomendowane odpowiedzi

Witam,

tak jak wspomniałem w temacie, nie mogę prawidłowo wykryć kolizji w silniku Ultimate3d, a konkretnie mojej broni (miecza) przyczepionej do ręki mojego bohatera tak jak w tym przykładzie http://forum.ultimate3d.org/topic/173239/1/

 

Użyłem tego kodu w stepie mojego wroga:

 

GML
if CheckSweptEllipsoidIntersection(weapon,x,y,z,10,10,10,10,10,10,GetObjectRoom())=true

{

instance_destroy()

}

 

 

Gdy miecz przebija go w grze, niestety nic się nie dzieje. Natomiast jeśli zmienię mój kod na taki:

 

GML
if CheckSweptEllipsoidIntersection(character,x,y,z,10,10,10,10,10,10,GetObjectRoom())=true

{

instance_destroy()

}

 

Wtedy kolizja mojego characteru z nim jest wykrywana bezbłędnie i obiekt się niszczy.

 

Dobra ale przechodzę do sedna sprawy, bo zdaję mi się że odkryłem co jest nie tak. Gdy otworzyłem grę w Debug Mode i zacząłem sprawdzać x,y,z broni, okazało się, że te wartości w ogóle się nie zmieniają i cały czas pokazują 0. Natomiast x,y,z charactera działa jak należy i zmienia się wraz z poruszaniem się.

Więc tu jest moje pytanie : Jak mogę sprawdzać x,y,z w każdem stepie? Albo może macie jakiś inny pomysł? Dodam jeszcze, że napisałem już temat z tą samą prośbą na oficjalnym forum Ultimate3d ale niestety jak narazie nie rwą się tam z pomocą, więc Plix Plox GMClan help e11256.gif .

PS: Za pomoc oferuję honorowe miejsce w creditsach, bo przecież kolizje to jedna z najważniejszych funkcji w każdej grze.

 

 

 

 

Tutaj macie jeszcze na dokładkę cały kod w mojej broni :

 

GML
Create:

 

file="models/zabimaru.ms3d";

 

texture=1;

 

LoadMesh();

 

adjust_matr=CreateTransformationMatrix(-1,0,0,1.5,92,-10,160,.3,.2,.2);

 

GML
Destroy:

 

ReleaseMatrix(adjust_matr);

 

GML
Step:

 

with (character)

 

{

 

Step();

 

UpdateSkeleton();

 

GetBoneTransformation(r_hand_matr,r_hand_bone);

 

}

 

TransformMatrix(GetObjectTransformation(id),adjust_matr,character.r_hand_matr);

 

 

 

Step();

Odnośnik do komentarza
Udostępnij na innych stronach

kofel, różnicy nie będzie.

BTW. Nie ma w U3D jakiejś funkcji na pobranie pozycji danego obiektu kolizyjnego, albo jego macierzy?

Odnośnik do komentarza
Udostępnij na innych stronach

@Kofel

Niestety nie działa ale dzięki za starania

 

@PsichiX

Nie mam pojęcia, cały czas szukam tego po necie.

 

Jeszcze trochę popróbuję, ale jeśli nic z tego nie wyjdzie to zrezygnuję z tego przykładu "doczepiania" broni do ręki i po prostu zanimuję broń tak by ruszała się jak gdyby bohater ją trzymał, ale będzie to cholernie upierdliwe gdy będę musiał to zrobić dla kilkudziesięciu broni, które próbuję zrobić.

 

EDIT:

Udało się ! Wystarczyło dodać parę wartości w kodzie kolizji ale nie będę was zanudzał, w końcu się udało :rockon:

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Wnioskuję że z niej dostanie informacje przydatne do wygenerowania prostego modelu kolizyjnego. Np. taki PhysX pobiera macierz obiektu i na jego podstawie tworzy dany obiekt kolizyjny (Czytalem o tym w tutorialu do PhysXa - zeby nie bylo ze z kosmosu to biore), a skoro to można to równie dobrze jak w Ultimate to jest to można pobrać jego pozycje z tej macierzy :P

Odnośnik do komentarza
Udostępnij na innych stronach

Wnioskuję że z niej dostanie informacje przydatne do wygenerowania prostego modelu kolizyjnego. Np. taki PhysX pobiera macierz obiektu i na jego podstawie tworzy dany obiekt kolizyjny (Czytalem o tym w tutorialu do PhysXa - zeby nie bylo ze z kosmosu to biore), a skoro to można to równie dobrze jak w Ultimate to jest to można pobrać jego pozycje z tej macierzy :P

 

Raczej macierz+pozycje w przestrzeni obiektu.

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