Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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.

  • 4 tygodnie później...
Opublikowano

bump... : D

 

W sumie dalej potrzebuje pomocy z tym, naprawdę nikt nie potrafi tego ogarnąć? : C

 

Czy może mam coś wyjaśnić bardziej o co chodzi albo coś... ?

O.. wiem, zrobię obrazek :3 *znika na parę minut*

 

here:

wyjasnienia.png

Opublikowano

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...

Opublikowano

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.

Opublikowano

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

Opublikowano

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.

Opublikowano

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

Opublikowano

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;

Opublikowano
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);

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ę...