Skocz do zawartości

Background scrolling w grze platformowej


Moldis

Rekomendowane odpowiedzi

Hi. Potrzebuję zrobić kilka poziomów backgroundu w sensie planów, udało mi się wyczytać o paralax scrollingu ale tam obrazki są zapętlane i mają już z góry ustawioną prędkość przesuwania. A me potrzebuje aby prędkość przesuwania się obrazka była uzależniona od jego wielkości w stosunku do szerokości roomu... innymi słowy że niebo ma np. szerokość 1000px, view ma 800px, room 1800px. I jeżeli postać stoi na poczatku mapy w pkt. x=0 to w view_xview jest wyświetlany obrazek od 0px. a jeśli postać stoi w pkt x=1800 to widać koniec obrazka aka x=1000, innymi słowy 200px z przodu jest obcięte. No. i właśnie taką funkcję potrzebuje a sam nie mogę sobie jakoś tego wymyślić ; C

 

Podsumowując: Need znaleźć zależność między 3 zmiennymi aka x bohatera, długość obrazka i długość roomu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

awww.. nie chodzi o to żeby coś było z tyłu czy przodu, to nie problem, wystarczy tylko w odpowiedniej kolejności rysować obrazki, problem tkwi w tym żeby dostosować odpowiednio prędkość przesuwania się planów. W sensie krótsza grafika przesuwa się wolniej w stosunku do tej dłuższej...

Odnośnik do komentarza
Udostępnij na innych stronach

zrobił bym tak jeśli nie chciał bym żeby prędkość jego przesuwania dostosowywała się sama do długości roomu i do długości grafiki która aktualnie będzie robić za plan.

 

ps. plany nie będą się zapętlać tylko mają trwać od początku do końca równo z graczem, zresztą widać ładnie na obrazku up.

Odnośnik do komentarza
Udostępnij na innych stronach

zelman, PRZESTAŃ

 

zrób sobie jeden obiekt odpowiedzialny za rysowanie tła, daj mu wysoki depth.

warstwowe tła to czysta matematyka.

 

zaraz walnę edita

 

edit:

GML
var tlow;

// zmiennej tlow daj wartosc szerokosci warstwy tla

var xx;

xx=view_xview[0]/(room_width-view_wview[0])*(view_wview[0]-tlow);

jak użyć

GML
draw_background(loltlo,view_xview[0]-xx,view_yview[0]);

poprawiać, jeśli są byki

Odnośnik do komentarza
Udostępnij na innych stronach

jeżeli użyję tego w sposób w jaki napisałeś to grafika zaczyna się gdzieś wyłaniać z prawej krawędzi w okolicach połowy roomu, i kończy się razem z końcem roomu.. więc to raczej nie ma tak być ^^"

 

a jeśli rysuje grafikę bezpośrednio w xx to grafika jest od początkowej krawędzi + znika gdzieś w połowie albo szybciej.

Odnośnik do komentarza
Udostępnij na innych stronach

spróbuj narysować to w pozycji xx

GML
var tlow;

// zmiennej tlow daj wartosc szerokosci warstwy tla

var xx;

xx=view_xview[0]/(room_width-view_wview[0])*(room_width-tlow);

wersja 2, czy będzie wersja 3? to zależy od tego, czy nie walnąłem się gdzieś znowu

Odnośnik do komentarza
Udostępnij na innych stronach

Nie trzeba rysować tych backgroundów funkcją 'draw_*', wystarczy do tego wbudowany system backgroundów GMa + Obiekt który będzie kontrolował scrollingiem:

GML (End Step)
background_x[0] = view_xview[0];

background_x[1] = view_xview[0]/2;

background_x[2] = view_xview[0]/3;

tak, ale dobrze byłoby wiedzieć, jaki depth mają wbudowane backgroundy. przy obiektach można zrobić obiekty wlatujące za plan.

 

poza tym, Moldisowi chodziło o "dostosowanie" warstw do rozmiaru rooma. podałem na to skrypt, można go użyć także tak:

GML
background_x[1]=view_xview[0]/(room_width-view_wview[0])*(room_width-tlow);
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ę...