Huri Opublikowano 17 Października 2013 Udostępnij Opublikowano 17 Października 2013 Cześć :) Mam 3 obiekty, które poruszają się równocześnie i kolidują ze ścianami (top-down) więc mogą się na nich zatrzymać. Próbuje osiągnąć taki efekt, że wszystkie obiekty są zawsze widoczne w view. W momencie gdy jeden z tych obiektów wychodzi poza view[0] to widok view[0] zwiększa się proporcjonalnie tak aby wszystkie obiekty były widoczne. Ale chciałbym też żeby widok zmniejszał się gdy obiekty mogą być widoczne jednocześnie. Na tą chwilę nie potrafię tego lepiej wytłumaczyć. Szukam już długo informacji na ten temat ale albo źle szukam albo nie potrafię tego ogarnąć. Kod z powiększaniem się view[0] mam taki GML if obj_A.x > view_wview[0] ||obj_B.x > view_wview[0] || obj_B.x > view_wview[0] { view_wview[0]=view_wview[0]+128; view_hview[0]=view_hview[0]+128; } if obj_A.y > view_hview[0] ||obj_B.y > view_hview[0] || obj_C.y > view_hview[0] { view_wview[0]=view_wview[0]+128; view_hview[0]=view_hview[0]+128; } Jak cofnąć taką zmianę? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 17 Października 2013 Udostępnij Opublikowano 17 Października 2013 Najprościej wyznaczyć największą odległość obiektów od siebie oddzielnie po osi X i Y, a potem ustawiać obszar viewu zależnie od tych odległości i ewentualnie od minimalnej odległości obiektów od krawędzi viewu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Huri Opublikowano 18 Października 2013 Autor Udostępnij Opublikowano 18 Października 2013 Tak tak kombinowałem z tym również. Mam jakieś zaćmienie i nie wiem co z tym zrobić. Nie potrafię ogarnąć tych prostych warunków :S. Tzn widok powiększa się ładnie... ale nie wiem jak napisać te warunki zeby się zmniejszał jeżeli jest taka możliwość. Największy dystans między obiektami wyznaczam w ten sposób: STEP 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; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 18 Października 2013 Udostępnij Opublikowano 18 Października 2013 Masz już ustalone największe odległości po osiach. Wtedy view_wview = max_distx+stałax, view_hview = max_disty+stałay, view_xview = mean(minx,maxx), view_yview = mean(miny,maxy) stałax to minimalna odległość od krawędzi ekranu dzielona na 2, tak samo stałay. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Huri Opublikowano 18 Października 2013 Autor Udostępnij Opublikowano 18 Października 2013 Hm.. ok .. jak zachować proporcje ekranu? Funkcja mean się nie sprawdza w tym przypadku lepszy efekt uzyskałem z GML view_xview[0]=minx-64; view_yview[0]=miny-64; Co prawda nie działa to dokładnie tak jakbym chciał ale jestem wstanie się na to zgodzić... o ile zmiany w rozmiarze okna będą zachodziły proporcjonalnie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 18 Października 2013 Udostępnij Opublikowano 18 Października 2013 moze vylicz propojce wiev na startu a potem v zmianie wiev zastosuj na mniej vazno os (x lub y) tak by sie wiev dostosoval, powieksajoc sie o minimalnom kwote Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 23 Października 2013 Udostępnij Opublikowano 23 Października 2013 Szerokość i wysokość view musi uwzględniać szerokość i wysokość sprite'a będącego całkiem z prawej i całkiem z dołu, bo jeśli pobierasz tylko X i Y Min i Max na podstawie origin obiektu, to ten będący z prawej będzie miał widoczny tylko swój lewy górny róg(zakładając, że origin jest na 0,0) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Huri Opublikowano 26 Października 2013 Autor Udostępnij Opublikowano 26 Października 2013 Kombinowałem już na wiele sposobów i sprawdzalem wiele stron w necie. Nie mam pojęcia jak to zrobić... Szkoda bo tylko tego brakuje mi do ukończenia gry. Reszta mechaniki jest praktycznie gotowa :( ... Będę wdzięczny za każdą pomoc :) EDIT: Jestem już bliski rozwiązania! View skaluje się dynamicznie z zachowanie proporcji... Czasami jednak zdarza się, że jeden obiekt jest niewidoczny (poza view)... ale to chyba kwestia tego o czym pisał I am Vader i jeszcze jednego warunku, który muszę dopisać :) EDIT2: Hm... Coś mam nie tak z wykrywaniem w pionie... poziomo działa dobrze... Pokombinuje :) 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ę