Kuc
Plutonowy NAFTALINA W KULKACH
 
Pomógł: 2 razy Posty: 91
2250 Prestiż
|
Wysłany: 07-10-2007, 19:23 [MMF2] [i nie tylko] Losowo generowany teren w grze od góry
|
|
|
Losowe podłoże do gry z widokiem od góry.
Dostepny przykład: http://rapidshare.com/fil..._Teren.rar.html
Najpierw stwórzcie sobie kilka podłóż, przykładowe macie przedstawione na obrazku (pamiętajcie żeby odległośc od kolejnych grafik była równa-w tym przypadku 100pikseli):
Czarny kolor na obrazku jest przezroczysty!
Wszystkie podłoża musza być w jednym pliku! (tak jest najszybciej)
Na początku ładujemy podłoża do Active Picture:
Start of frame > New picture: | Cytat: | | Appdrive$+Appdir$+terrain.PNG |
Jeśli chcemy aby terrain.PNG był w folderze np.Data wpisujemy:
| Cytat: | | Appdrive$+Appdir$+Data/terrain.PNG |
Drugą akcją w zdarzeniu Start of frame będzie uruchomienie pętli która generuje teren:
Fast loop>start loop>
Liczba pętli będzie uzależniona od wielkości terenu w pikselach i od odsepów miezy grafikami.
UWAGA:mniejsze grafiki=mniejsze odstępy=większa pętla=wolniejsze generowanie! Dlatego do gier z przewijaniem ekranu zalecam tworzenie dużych grafik terenu np.100x100 piskeli.
Np.Chcę zapełnić ekran 3200x3200 piskeli grafikami które pokazałem (100x100 pikseli), robię dostęp 50 pikseli(każda grafika ma 100x100, lecz tylko około 50x50 na środku jest całe wypełnione piskelami.(tym dalej od środka tym więcej pikseli przezroczystych.
Żeby znać liczbę graficzek na szerokości dzielę szerokośc ramki przez odstęp+1.Analogicznie postępujemy żeby obliczyć liczbę graficzek na wysokosci.
Mnożymy pierwszy wynik z drugim - znamy już ilość pętli!
Liczba pętli=((roz.pozioma/odstęp)+1)*((roz.pionowa/odstęp)+1)
Teraz najważniejsze zdarzenie-malowanie grafiki na ekranie.
On loop "terrain"> Global Value C na
w nawiasy wpisujemy liczbę grafik które znajduja się w pliku terrain.PNG.
Druga akcja w tym zdarzeniu:
Klikamy prawym na Active Picture(z grafikami podłóż) i wybieramy Create Backdrop Object(na dole listy), wpisujemy i zatwierdzamy kolejno Enterem:
| Cytat: | | Global Value A*odstep poziomy-połowa dlugości grafiki podłoża |
<Enter>
| Cytat: | | Global Value B*odstęp pionowy-połowa wysokości grafiki podłoża |
<Enter>
| Cytat: | | Global Value C*odległość od następnej grafiki(w mojej grafice ta wartość wynosi 100pikseli) |
<Enter>
<Enter>
| Cytat: | | długość jednej graficzki podłoża |
<Enter>
| Cytat: | | wysokość graficzki podłoża |
<Enter>
i wybieramy Not an obstacle(no chyba że chcemy zeby teren był przeszkodą ).
Ostatnią akcją w tym zdarzeniu jest dodanie 1 do Global Value A.
Następne zdarzenie sprawdza czy została wypełniona cała linia pozioma, jeśli tak tworzy od nowej linii(nizej).
On loop "terrain"
+Global Value A=roz.pozioma/odstęp+1 (w przypadku mojego przykładu 65) > Ustaw Global Value A na 0, dodaj 1 do Global Value B.
Koniec!
Jeśli nie wiecie jak czegoś zrobić macie przykład(tylko MMF2).
http://rapidshare.com/fil..._Teren.rar.html
Pojęcia:
Global Value A to pozycja x/odstęp
Global Value B to pozycja y/odstęp
Global Value C to wylosowany numer podłoża
roz.pozioma to rozdzielczość pozioma(x) terenu który wypełniamy
roz.pionowa to rozdzielczość pionowa(y) terenu który wypełniamy
odstęp to odstęp malowanych na ekranie, kolejnych grafik
Zwykłym użytkownikom nie wolno używać kolorów moderacji i administracji. To pochodzi pod warna, ale masz ostatnią szansę.
No bez przesady, to przecież tylko artykuł | RomanX |
| Ostatnio zmieniony przez Minty 08-10-2007, 16:57, w całości zmieniany 5 razy |
|