PoxiPol Opublikowano 20 Lutego 2011 Udostępnij Opublikowano 20 Lutego 2011 Oki, mam maly problemik, ktory pewno bardzo latwo jest naprawic. Otoz chce by moja pileczka sie obracala wraz z ruchem, i niby mam wszystko ok: GML if keyboard_check(vk_up) then {x+=4;rotation-=4;} else if keyboard_check(vk_down) then {x-=4;rotation+=4;} if keyboard_check(vk_left) then {y-=4;xrotation-=4;} else if keyboard_check(vk_right) then {y+=4;xrotation+=4;} w stepie GML d3d_transform_set_identity(); d3d_transform_add_rotation_x(xrotation); d3d_transform_add_rotation_y(rotation); d3d_transform_add_translation(x,y,z+12); d3d_draw_ellipsoid(-12,-12,-12, 12,12,12,background_get_texture(bac_Ball),4,2,10); d3d_transform_set_identity(); w draw Kamerę mam inaczej ustawioną więc sie nie pytajcie czemu x i y sa inaczej, ale mniejsza o to. Otoż czasami, piłka dobrze kręci na osi y, a wierci na osi x, albo na odwrót. Tzn na osi y zawsze, obojetnie od obrotu osi x, obraca sie w dobra stronę, ale za to oś x sie obraca wraz z osia y, co powoduje ze obracanie jest zalezne własnie od tego. Ciężko to wytłumaczyc, sami byście musieli sie pobawić, ale możliwe ze ktoś juz natknąl na ten problem. Dziekuję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 20 Lutego 2011 Udostępnij Opublikowano 20 Lutego 2011 Nie do końca rozumiem, ale przypuszczam, że to ten sam problem na który ja się natknąłem niecałe 2 lata temu. W sensie, że nie kręci się się według globalnej osi x tylko tej już obróconej względem osi y tak? Poważna sprawa! :P Siedziałem nad tym sporo i sobie wtedy nie poradziłem. Powodzenia! :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 20 Lutego 2011 Udostępnij Opublikowano 20 Lutego 2011 z uwzglednieniem rotacji to tak jak w symulatorach lotu. w tym przykladzie sprawdz obiekty od symulatora, z tego, co pamietam, to w nim jest kod na poprawne obracanie tego, co masz u siebie, jako rotation i xrotation: https://gmclan.org/up1105_3_XeMatrix_1_2.html Jesli zas nie ma tam tego, o czym mysle (bo mysle, ze powinno, ale dawno w to nie zagladalem), to wybacz :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 20 Lutego 2011 Udostępnij Opublikowano 20 Lutego 2011 Zapewne chodzi Ci o gimbal lock. Przy obrocie osi z o 90 stopni nakłada się na x i tracisz jedną a oś swobody. Zapewne gm używa zwykłe euler angles to rotacji. Dobrym rozwiązaniem są kwaterniony ale wątpię czy gm je implementuje. Najbardziej łopatologiczne rozwiązanie to sprawdzanie danego kąta obrotu i jego poprawa w przypadku obrotu kuli nie będzie to miało żadnego wpływu na wygląd więc powinno spasować. Obrót wokół globalnych osi odpada bo to nie układ planetarny. Nie pozwalaj aby osie się na siebie nałożyły i tyle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 20 Lutego 2011 Udostępnij Opublikowano 20 Lutego 2011 Spróbuj po prostu zamienić kolejność d3d_transform_add_rotation_y(rotation); d3d_transform_add_rotation_x(xrotation); widziałem gdzieś przykład takiego obracania chyba ThatGamesGuy http://gamesguy.bravehost.com/create.html o jest http://www.thatgamesguy.com/tutorials/tut1...ingball_edi.zip << direct link i druga wersja http://www.thatgamesguy.com/examples/ChromeBall_gm6.zip Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 23 Lutego 2011 Autor Udostępnij Opublikowano 23 Lutego 2011 Games guy robi to glupio, bo obarca pilke tak ze nagle ona skacze, widzialem to juz. 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ę