Ice Cube Opublikowano 30 Grudnia 2016 Udostępnij Opublikowano 30 Grudnia 2016 Bawie sie w 3d,to moje poczatki,czytam wasze kursy,przegladam forum,cwicze na prostych przykladach ale mam pytanko jak sprawic,żeby 3d block krecił sie wokół włąsnej osi domyslam sie,że służy do tego d3d_Transform,ale czy moglby mi ktos to pokolei bardzo prosto wyjasnic? mam juz swoja plansze,mam figure 3d block: d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1) co zrobic by krecił sie wokół własnej osi? pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Grudnia 2016 Udostępnij Opublikowano 30 Grudnia 2016 GML d3d_transform_set_rotation_z(angle); d3d_transform_add_translation(x, y, z); d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1); d3d_transform_set_identity(); Zwróć uwagę że pierwszy jest SET kolejny ADD. No i kolejność jest ważna. Najpierw skalowanie (tutaj nie ma akurat) potem obracanie potem przesuwanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 30 Grudnia 2016 Autor Udostępnij Opublikowano 30 Grudnia 2016 GML d3d_transform_set_rotation_z(angle); d3d_transform_add_translation(x, y, z); d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1); d3d_transform_set_identity(); Zwróć uwagę że pierwszy jest SET kolejny ADD. No i kolejność jest ważna. Najpierw skalowanie (tutaj nie ma akurat) potem obracanie potem przesuwanie. error unknown variable angle Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Grudnia 2016 Udostępnij Opublikowano 30 Grudnia 2016 No bo tam miałeś podstawić twój kąt obrotu. Lub zmienną za pomocą której chcesz ten obiekt obracać. Chyba brakuje ci podstaw, czym są funkcje czym zmienne. Sądząc po pytaniu z poprzedniego tematu widać że nie umiesz odróżnić zmiennej od funkcji wbudowanej. "d3d_transform_add_rotation_x=45;" tutaj przypisałeś wartość 45 do zmiennej o nazwie "d3d_transform_add_rotation_x" zamiast użyć funkcji o nazwie d3d_transform_add_rotation_x(), funkcje mają okrągłe nawiasy na końcu. W nawiasie się wstawia argumenty (parametry) które te funkcje wymagają. W tej konkretnej trzeba podać kąt obrotu wyrażony w stopniach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 2 Stycznia 2017 Autor Udostępnij Opublikowano 2 Stycznia 2017 No bo tam miałeś podstawić twój kąt obrotu. Lub zmienną za pomocą której chcesz ten obiekt obracać. Chyba brakuje ci podstaw, czym są funkcje czym zmienne. Sądząc po pytaniu z poprzedniego tematu widać że nie umiesz odróżnić zmiennej od funkcji wbudowanej. "d3d_transform_add_rotation_x=45;" tutaj przypisałeś wartość 45 do zmiennej o nazwie "d3d_transform_add_rotation_x" zamiast użyć funkcji o nazwie d3d_transform_add_rotation_x(), funkcje mają okrągłe nawiasy na końcu. W nawiasie się wstawia argumenty (parametry) które te funkcje wymagają. W tej konkretnej trzeba podać kąt obrotu wyrażony w stopniach. ok dzieki za rady znowu sie czegos nauczyłem ;) mam takie cos: d3d_transform_add_rotation_z(q) d3d_transform_add_translation(1,1 ,0); d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1); d3d_transform_set_identity(); obiekt kreci sie dzieki zmiennej q,ale nie wokół własnej osi,tylko wokół mojej :( co zrobic by sie krecil wokol wlasnej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 3 Stycznia 2017 Autor Udostępnij Opublikowano 3 Stycznia 2017 może inaczej jezeli umieszcze obiekt w roomie na wspolrzednych x=0,y=0 to obiekt kreci sie wokół wlasnej osi ale jak umieszcze obiekt gdzies dalej np x=1000,y=1000 to obiekt lata po calej planszy zamiast krecic sie wokół własnej osi,to kreci sie jakby wokół x=0,y=0 ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Stycznia 2017 Udostępnij Opublikowano 3 Stycznia 2017 Zwróć uwagę że pierwszy jest SET kolejny ADD Aha nie zauwazyłem co wpisałeś w linice d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1); tutaj jest źle. Jak używasz transformów do przesuwania obiektów to w funkcjach rysujących dany model współrzędne ustawiaj bez zmiennych pozycji x, y, z. Te wsadza się do translate. czyli całość powinna być tak: GML d3d_transform_set_rotation_z(angle); d3d_transform_add_translation(x, y, 0); d3d_draw_block(-128,-128,155,128,128,0,background_get_texture(bck_blok),1,1); d3d_transform_set_identity(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 5 Stycznia 2017 Autor Udostępnij Opublikowano 5 Stycznia 2017 Aha nie zauwazyłem co wpisałeś w linice d3d_draw_block(x-128,y-128,155,x+128,y+128,0,background_get_texture(bck_blok),1,1); tutaj jest źle. Jak używasz transformów do przesuwania obiektów to w funkcjach rysujących dany model współrzędne ustawiaj bez zmiennych pozycji x, y, z. Te wsadza się do translate. czyli całość powinna być tak: GML d3d_transform_set_rotation_z(angle); d3d_transform_add_translation(x, y, 0); d3d_draw_block(-128,-128,155,128,128,0,background_get_texture(bck_blok),1,1); d3d_transform_set_identity(); wielkie dzieki jesteś wielki wszystko działa :) 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ę