Nubosabuk Opublikowano 22 Września 2011 Udostępnij Opublikowano 22 Września 2011 W stepie mam kod (zamieszczony poniżej). Składa się on z dwóch części: jedna zajmuje się przybliżaniem/oddalaniem w momencie gdy aktualnie znajdujemy się w układzie planetarnym, a druga część zajmuje się tym samym, lecz gdy znajdujemy się w przestrzeni między-gwiezdnej. Obie części są IDENTYCZNE, różnią się tylko jedną zmienną. W eventach Mouse Wheel Up / Mouse Wheel Down zmieniają się zmienne: zoom_ukl (jeśli w układzie) i global.zoom (jeśli w galaktyce)- wartości zmieniają się o 1 co ruch kółkiem myszy . W momencie zmiany tych zmiennych kod ma płynnie dokonać przybliżenia lub oddalenia wykorzystując do tego zmienną przyblizenie. Teraz czas na problem: w widoku galaktyki wszystko działa tak jak chcę, a w widoku układu w momencie przybliżania gdy, zmienna przyblizenie osiągnie wartość 53, zaczyna zmieniać wartość co step z 53 na 53.1 potem znów 53 itd. i dzieje się tak z każdą kolejną wartością: 52, 51 aż do 1. Może jeszcze dodam że wartością początkową dla zoom_ukl jest 59 ( gdy pojawiamy się w układzie to widzimy od razu cały układ) a jedynka oznacza, że mamy przybliżoną planetę(i statek) na maxa. Nie wiem czy jest to zrozumiałe, w razie czego postaram się coś dopowiedzieć. GML if global.zoom==0 { //oddalanie/przyblizanie w ukladzie planetarnym if przyblizenie==zoom_ukl { //nic tu nie ma } else if przyblizenie > zoom_ukl { przyblizenie-=0.1; } else { przyblizenie+=0.1; } view_wview[2]=global.view0_w*przyblizenie; view_hview[2]=global.view0_h*przyblizenie; //centrowanie widoku na statku if instance_exists(obj_statek1) { view_xview[2]=obj_statek1.x-view_wview[2]/2; view_yview[2]=obj_statek1.y-view_hview[2]/2; } } else { //oddalanie/przyblizanie w galaktyce if przyblizenie==global.zoom { //nic tu nie ma } else if przyblizenie > global.zoom { przyblizenie-=0.1; } else { przyblizenie+=0.1; } view_wview[0]=global.view0_w*przyblizenie; view_hview[0]=global.view0_h*przyblizenie; //centrowanie widoku na statku if instance_exists(obj_statek1) { view_xview[0]=obj_statek1.x-view_wview[0]/2; view_yview[0]=obj_statek1.y-view_hview[0]/2; } //info ze teraz widok 0 jest widoczny global.widok=0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Września 2011 Udostępnij Opublikowano 22 Września 2011 próbowałeś tak? GML if przyblizenie==zoom_ukl { //nic tu nie ma } else { if przyblizenie > zoom_ukl { przyblizenie-=0.1; } else { przyblizenie+=0.1; } } Chodź to w sumie nie powinno mieć znaczenia ale warto spróbować. zmienna przyblizenie osiągnie wartość 53, zaczyna zmieniać wartość co step z 53 na 53.1 potem znów 53 itd. i dzieje się tak z każdą kolejną wartością: 52, 51 aż do 1. Tu jest dla mnie niejasność, najpierw mówisz że wartości oscylują 53, 53.1, 53, 53.1 a dalej dodałeś że dzieje się tak z każdą kolejną wartością czyli jednak nie oscylują tylko spadają poprawnie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nubosabuk Opublikowano 22 Września 2011 Autor Udostępnij Opublikowano 22 Września 2011 spróbuję tak jak napisałeś (EDIT: spróbowałem i nie działa). A z tymi wartościami to tak: zmienna zoom_ukl zmienia się poprawnie, w momencie ruszania kółkiem myszy, natomiast zmienna przyblizenie co step zwiększa się/zmniejsza się o 0.1 jeśli nie jest ona równa zoom_ukl. W momencie wyrównania się wartości zmiennej przyblizenie z tą drugą, gdy wartość zmiennej przybliżenie jest mniejsza równa niż 53, zaczyna ona oscylować wokół tej wartości. Np dla wartości zoom_ukl==10, przyblizenie będzie się zmieniać z 10 na 10.1 i tak w kółko. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 22 Września 2011 Udostępnij Opublikowano 22 Września 2011 GML ... if przyblizenie > zoom_ukl { przyblizenie-=0.1; } else if przyblizenie < zoom_ukl { przyblizenie+=0.1; } ... Musi być tak, żeby wartość przyblizenie = zoom_ukl nie wywoływała else. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nubosabuk Opublikowano 22 Września 2011 Autor Udostępnij Opublikowano 22 Września 2011 niestety już tak napisane miałem wcześniej, teraz na wszelki wypadek jeszcze raz sprawdziłem i nic. Ewentualnie może macie jakąś radę jak inaczej podejść do zagadnienia płynnego przybliżania/oddalania? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Września 2011 Udostępnij Opublikowano 22 Września 2011 Ja bym to zrobił tak: GML if ( mouse_wheel_down() ) zoom -= 1; if ( mouse_wheel_up() ) zoom += 1; var _diff; _diff = actual_zoom - zoom; actual_zoom -= (_diff)/3 https://gmclan.org/up539_14_p_ynna_zmiana_warto_ci.html Edit: zrobiłem tym sposobem ładny efekt graficzny, jakąś super nowę czy coś, może ci się przyda https://gmclan.org/up539_4_supernowa.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nubosabuk Opublikowano 22 Września 2011 Autor Udostępnij Opublikowano 22 Września 2011 Ja bym to zrobił tak: GML if ( mouse_wheel_down() ) zoom -= 1; if ( mouse_wheel_up() ) zoom += 1; var _diff; _diff = actual_zoom - zoom; actual_zoom -= (_diff)/3 https://gmclan.org/up539_14_p_ynna_zmiana_warto_ci.html Edit: zrobiłem tym sposobem ładny efekt graficzny, jakąś super nowę czy coś, może ci się przyda https://gmclan.org/up539_4_supernowa.html Ten sposób wygląda fajnie, wypróbuję. Super efekt Ci wyszedł:) nie myślałem że jednym sprajtem można tak wiele osiągnąć Dzięki:) 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ę