Markuz Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Witam, jak zrobić obrót brył w 3D? Tzn. wiem już że za pomocą d3d_transform_set_identity z tąd = klik , ale jak tak zrobię to robi się tak samo jak tamtemu gościowi tzn. cały ekran "miga". Jak powrócić do normalnego stanu? hmm? PS. np. chce obrócić ten blok o 30 stopni względem osi x : GML d3d_draw_block(x-1,y-2,7,x+1,y+2,2,texture[1],1,1); hmm? Proszę o pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 w tamtym kodzie brakowało "d3d_transform_add_translation(x,y,z)" może pomoże :P GML d3d_transform_set_rotation_x(30); d3d_transform_add_translation(x,y,2) d3d_draw_block(-1,-2,5,1,2,0,texture[1],1,1); d3d_transform_set_identity(); co do migotania obrazu to nie wiem nigdy się z nim nie spotkałem dobrze masz ustawiony projektor (kamerę 3D) ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 GML d3d_transform_set_rotation_x( degtorad( 30 ) ); // Draw block d3d_transform_set_identity(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 GML d3d_transform_set_rotation_x( degtorad( 30 ) ); // Draw block d3d_transform_set_identity(); brak d3d_transform_add_translation(x,y,z) (pozycjonowanie obiektu 3D) łatwo może doprowadzić do popełniania błędów Nie po to jest ta funkcja by jej nie stosować, poza tym znacznie ułatwia prace w 3D i funkcja degtorad() jest tu zbędna Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Czyli funkcja "d3d_transform_set/add_rotation_x/y/z" nie przyjmuje wartości w radianach? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Czyli funkcja "d3d_transform_set/add_rotation_" nie przyjmuje wartości w radianach? Wpisując w direct wartość też chyba nie zamieniasz jej na radian ? Funkcja direct jak i "d3d_transform_set/add_rotation_x/y/z" sama sobie oblicza stopieni z wartości liczbowej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Cóż, dawno nie włączyłem gamemakera, stąd te 'braki' ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 30 Czerwca 2010 Autor Udostępnij Opublikowano 30 Czerwca 2010 Heh nom już działa ale jakiś dziwny ten obrót heh, mianowicie , mam bloczek takiego typu: GML d3d_draw_block(x-1,y-2,7,x+1,y+2,2,TX,1,1); I chciałbym aby się on kołysał "na boki" tzn. tak jakby człowiek który się "wozi" wiecie o co chodzi? heh Kombinuje na różne sposoby ale nie chodzi ... Proszę o pomoc ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Wypierdziel te x i y, GML d3d_draw_block(-1,-2,-7,1,2,2,TX,1,1); Od 'przenoszenia' jest macierz tzw. translacji... ( 'd3d_transform_add_translation' ) E: Wpisując w direct wartość też chyba nie zamieniasz jej na radian ?Trzeba, w końcu to jest matematyka ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 E:Trzeba, w końcu to jest matematyka ;] Co trzeba ? Przecież direct sam sobie zamieni wartość liczbową np. 400 na 360 + 40 co da w wyniku obrót o 40 stopni gdzie tu masz potrzebę użycia funkcji degtorad() ? i tak samo funkcja d3d_transform_set_rotation_x(x) działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 30 Czerwca 2010 Autor Udostępnij Opublikowano 30 Czerwca 2010 Heh , a mógłbym poprosić o jakiś fragment kodu? Bo ja próbuje i albo obiektu w ogóle nie widać albo na chwile się on "wyłania" po czym znika heh... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 Heh , a mógłbym poprosić o jakiś fragment kodu? Bo ja próbuje i albo obiektu w ogóle nie widać albo na chwile się on "wyłania" po czym znika heh... Przecież był podany https://forum.gmclan.org/index.php?showtopi...mp;#entry312512 Nie znam kodu więc ciężko mi powiedzieć co żeś tam namodził Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 30 Czerwca 2010 Autor Udostępnij Opublikowano 30 Czerwca 2010 Oto cały kod: STEP: GML //Przeciwnik sie kołysze if(global.endata[ID,4] <= 30) { global.endata[ID,4] += 1; } if(global.endata[ID,4] > 30) { global.endata[ID,4] -= 1; } global.endata[iD,4] - to jest rotacja przeciwnika CREATE: GML ID = global.lastid; TX_ID = global.endata[ID,1]; TX = sprite_get_texture(tx_tower,TX_ID); TX2 = sprite_get_texture(tx_tower,0); TX3 = sprite_get_texture(spr_object,0); z = 4; DRAW: GML draw_set_alpha(0.3); d3d_draw_floor(x-5,y-5,1,x+3,y+3,1,TX3,1,1);//Cień gracza draw_set_alpha(1); d3d_draw_block(x-2,y-2,7,x+2,y+2,2,TX,1,1); //Tłów d3d_draw_block(x-1,y-1,8,x+1,y+1,7,TX2,1,1); //Głowa d3d_draw_block(x-2,y-2,8,x+2,y-3,3,TX2,1,1); //Tarcza d3d_draw_block(x-4,y+2,6,x+2,y+3,5,TX2,1,1); //Miecz</span> I jeśli możesz powiedz mi jak zrobić aby to wszystko w drawie się obracało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 @LionX, myślałem że chodzi o natywny Direct3D, a nie ten GMowy ;d E: GML (Draw) d3d_transform_set_rotation_x(global.endata[ID,4]); d3d_transform_add_translation(x,y,0); draw_set_alpha(0.3); d3d_draw_floor(-5,-5,1,+3,+3,1,TX3,1,1);//Cień gracza draw_set_alpha(1); d3d_draw_block(-2,-2,7,+2,+2,2,TX,1,1); //Tłów d3d_draw_block(-1,-1,8,+1,+1,7,TX2,1,1); //Głowa d3d_draw_block(-2,-2,8,+2,-3,3,TX2,1,1); //Tarcza d3d_draw_block(-4,+2,6,+2,+3,5,TX2,1,1); //Miecz d3d_transform_set_identity(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 30 Czerwca 2010 Autor Udostępnij Opublikowano 30 Czerwca 2010 Dzięki :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 30 Czerwca 2010 Udostępnij Opublikowano 30 Czerwca 2010 GML (Draw) d3d_transform_set_rotation_x(global.endata[ID,4]); d3d_transform_add_translation(x,y,0); draw_set_alpha(0.3); d3d_draw_floor(-5,-5,1,+3,+3,1,TX3,1,1);//Cień gracza draw_set_alpha(1); d3d_draw_block(-2,-2,7,+2,+2,2,TX,1,1); //Tłów d3d_draw_block(-1,-1,8,+1,+1,7,TX2,1,1); //Głowa d3d_draw_block(-2,-2,8,+2,-3,3,TX2,1,1); //Tarcza d3d_draw_block(-4,+2,6,+2,+3,5,TX2,1,1); //Miecz d3d_transform_set_identity(); Można by też tak, dzięki czemu jeśli będzie skok, cień nie będzie skakał z nami GML (Draw) draw_set_alpha(0.3); d3d_transform_add_translation(x,y,0); d3d_draw_floor(-5,-5,1, 3,3,1, TX3,1,1);//Cień gracza d3d_transform_set_identity(); draw_set_alpha(1); d3d_transform_set_rotation_z(global.endata); d3d_transform_add_translation(x,y,z); d3d_draw_block(-2,-2,7, 2,2,2, TX,1,1); //Tłów d3d_draw_block(-1,-1,8, 1,1,7, TX2,1,1); //Głowa d3d_draw_block(-2,-2,8, 2,-3,3, TX2,1,1); //Tarcza d3d_draw_block(-4,2,6, 2,3,5, TX2,1,1); //Miecz d3d_transform_set_identity(); 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ę