Huri Opublikowano 28 Sierpnia 2014 Udostępnij Opublikowano 28 Sierpnia 2014 Cześć :) Ech dawno mnie tu nie było ale swoich projektów nie zarzuciłem totalnie. Zrobiłem sobie po prostu przerwę. Mam jednak wciąż ten sam problem. Szukałem na forum ale nie znalazłem nic konkretnego. Otóż mam 3 obiekty, którymi gracz steruje jednocześnie. Cały etap gry jest większy niż okno i w momencie gdy jeden z obiektów wydostaje się poza widoczny obszar viewport powinien się skalować z jednoczesnym zachowaniem proporcji a gdy nie ma takiej potrzeby (obiekty są blisko siebie) viewport powinien się zmniejszać. Jak można to osiągnąć? Doszedłem do momentu, w którym... Dobra. Nie będę zaśmiecał waszych głów tym co naskrobałem. Macie może jakieś pomysły? Jutro postaram się opisac problem dokładniej z obrazkami jeśli coś jest niezrozumiałe... Dodam też kod, który mam, ale obstawiam, że jest do wywalenia mimo, że działa "prawie" tak jakbym chciał... Pozdrawiam :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 28 Sierpnia 2014 Administratorzy Udostępnij Opublikowano 28 Sierpnia 2014 Przelicz obecną proporcję ekranu, np. 1024/768 = 0.75; Potem zrób żeby szerokość viewa, to była odległość między najbliższym i najdalszym obiektem: GML var a = min(objA.x, objB.x, objC.x); var b = max(objA.x, objB.x, objC.x); view_wview[0] = b-a+20; // 20 to dodatkowy border po 10 na kazda strone, zeby obiekty nie były ucinane view_hview[0] = view_wview[0]*0.75; To tak w podstawowej wersji, a jak chcesz też z wysokością no to się musisz więcej pobawić, ale podstawę logiki masz :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Huri Opublikowano 28 Sierpnia 2014 Autor Udostępnij Opublikowano 28 Sierpnia 2014 Generalnie to robiłem tak jak napisałeś. Z jedną małą ale istotną różnicą. Ale się nie przyznam na czym polegał mój błąd bo wstyd... Z nową wiedzą postaram się przerobić kod, który miałem dotychczas żeby jeszcze pion działał jak należy ;). Ale nie pogniewam się jak mi ktoś podpowie coś więcej ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Sierpnia 2014 Administratorzy Udostępnij Opublikowano 29 Sierpnia 2014 Wyliczasz to samo dla pionu i jeżeli szerokość jest większa, to używsz kodu jak wyżej (dwie ostatnie linijki), a jak wysokość, to na odwrót - wysokości dajesz wyliczony rozmiar, a szerokość to ona * 1.33 (1024/768 = 1.33, 768/1024 = 0.75). Także dodajesz 4 linijki kodu, z czego dwie to if (szerokosc > wysokosc) oraz else. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Huri Opublikowano 31 Sierpnia 2014 Autor Udostępnij Opublikowano 31 Sierpnia 2014 EDIT: Już wiem.. Działa... nie wywaliłem 2 linijek kodu ;) Kurcze. Przepraszam, że wykazuje się tu brakiem logicznego myślenia. Ale nie mogę dojść do tego co napisałeś. Ja mam tak przy rozdzielczości 960x540: GML maxx=max(obj_rat64.x,obj_rat2_64.x,obj_rat3_64.x);minx=min(obj_rat64.x,obj_rat2_64.x,obj_rat3_64.x); maxy=max(obj_rat64.y,obj_rat2_64.y,obj_rat3_64.y); miny=min(obj_rat64.y,obj_rat2_64.y,obj_rat3_64.y); max_distx=(maxx-minx); max_disty=(maxy-miny); view_xview = minx-128; view_yview = miny-128; view_wview = (max_distx)+512; view_hview = view_wview[0]*0.5625; I to działa świetnie... Czy mój kod na skalowanie w pionie powinien wyglądać tak? GML GML if max_disty>max_distx { view_wview = (max_disty)+512; view_hview = view_wview[0]*0.5625; } else { view_hview = max_disty+512; view_wview = view_hview*1.77; } Niby działa ale czasami zdarza się, że obiekty gracza znikają z ekranu. Zresztą pokaże jak to wygląda na filmie :) Wyliczasz to samo dla pionu i jeżeli szerokość jest większa, to używsz kodu jak wyżej (dwie ostatnie linijki), a jak wysokość, to na odwrót - wysokości dajesz wyliczony rozmiar, a szerokość to ona * 1.33 (1024/768 = 1.33, 768/1024 = 0.75). Także dodajesz 4 linijki kodu, z czego dwie to if (szerokosc > wysokosc) oraz else. 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ę