Skocz do zawartości

Dynamiczny view i 3 obiekty


Huri

Rekomendowane odpowiedzi

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

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

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...