Purepain Opublikowano 4 Lutego 2009 Udostępnij Opublikowano 4 Lutego 2009 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 . 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 Więcej opcji udostępniania...
Kofel Opublikowano 4 Lutego 2009 Udostępnij Opublikowano 4 Lutego 2009 GML if CheckSweptEllipsoidIntersection(weapon,x,y,z,10,10,10,10,10,10,GetObjectRoom())=true { instance_destroy() } GML if( CheckSweptEllipsoidIntersection(weapon,x,y,z,10,10,10,10,10,10,GetObjectRoom()) == true ) { instance_destroy() } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 4 Lutego 2009 Udostępnij Opublikowano 4 Lutego 2009 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 Więcej opcji udostępniania...
Purepain Opublikowano 4 Lutego 2009 Autor Udostępnij Opublikowano 4 Lutego 2009 @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 Więcej opcji udostępniania...
Kofel Opublikowano 18 Lutego 2009 Udostępnij Opublikowano 18 Lutego 2009 kofel, różnicy nie będzie. BTW. Nie ma w U3D jakiejś funkcji na pobranie pozycji danego obiektu kolizyjnego, albo jego macierzy? To dało mi do myślenia że GM jest fajnym językiem. ;s Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 18 Lutego 2009 Udostępnij Opublikowano 18 Lutego 2009 @Kofel: GM nie jest językiem. Ja też już wiem, czemu ci z warsztatu jadą po GML. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 18 Lutego 2009 Udostępnij Opublikowano 18 Lutego 2009 @Kofel: GM nie jest językiem. Ja też już wiem, czemu ci z warsztatu jadą po GML. hmm.. bo jesteście lenie? Macierz to zwykła tablica dwuwymiarowa a podstawy można załapać po 20min. btw Psichix: Co mu da sama macierz? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 19 Lutego 2009 Udostępnij Opublikowano 19 Lutego 2009 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 Więcej opcji udostępniania...
Will Opublikowano 19 Lutego 2009 Udostępnij Opublikowano 19 Lutego 2009 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę