Purepain Opublikowano 4 Lutego 2009 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();
Kofel Opublikowano 4 Lutego 2009 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() }
PsichiX Opublikowano 4 Lutego 2009 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?
Purepain Opublikowano 4 Lutego 2009 Autor 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:
Kofel Opublikowano 18 Lutego 2009 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
Piczer Opublikowano 18 Lutego 2009 Opublikowano 18 Lutego 2009 @Kofel: GM nie jest językiem. Ja też już wiem, czemu ci z warsztatu jadą po GML.
Will Opublikowano 18 Lutego 2009 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?
PsichiX Opublikowano 19 Lutego 2009 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
Will Opublikowano 19 Lutego 2009 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.
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ę