.WSTĘP.
Cześć!
Czy zastanawiałeś się kiedyś jak wyklikać prosty silniczek, dzięki któremu uatrakcyjnimy centrowanie postaci w ekranie naszej gry? Drogi klikowcu - porzuć wszelkie myśli i rozkminy, bo oto wchodzę na scenę z ergonomicznym rozwiązaniem, które Ty - początkujący klikowcu - możesz wykorzystać w swej produkcji!
Częsty błąd
Podstawowym błędem początkujących klikowców jest używanie centrowania 'sztywnego', czyli:
| 'Sztywne' centrowanie |
| 1 |
• Zawsze
Centruj ekran względem "postać" 0,0
|
Nie jest to takie złe, pod warunkiem, że w grze używamy rozdzielczości mniejszej lub równej
:640x480: (chociaż i tutaj również występuje ryzyko spowolnienia rozgrywki).
Dodatkowo, sposób ten jest prosty, banalny, mało efektywny i efektowny. Poniżej przedstawiam o wiele ciekawsze i atrakcyjniejsze rozwiązanie:
A więc do roboty!
Najpierw ustalmy wielkość naszego poziomu. Ustawmy więc ją na np.
:960x600:. Wielkość okna zaś, ustawiamy na
:320x200:.
Skupmy się teraz na edytorze etapu. Musimy tam utworzyć kilka niezbędnych obiektów:
- obiekt aktywny 'postać' (nadajemy mu ruch 8-kierunkowy),
- obiekt aktywny 'kamera' (np. kwadrat 15x15),
- licznik typu
ukryty (hidden) o nazwie 'kam-x',
- licznik typu
ukryty (hidden) o nazwie 'kam-y',
Teraz, gdy mamy już wszystkie potrzebne nam obiekty, możemy przejść do edytora zdarzeń.
Pierwsze nasze zdarzenie powinno wyglądać następująco:
| Płynne przejścia |
| 1 |
• Zawsze
Ustaw wartość zmienną 'A' obiektu 'postać' na X( "postać" )/320*320+160
Ustaw wartość zmienną 'B' obiektu 'postać' na Y( "postać" )/200*200+100
Ustaw pozycję X obiektu 'kamera' na Alterable Value A( "postać" )
Ustaw pozycję Y obiektu 'kamera' na Alterable Value B( "postać" )
Centruj ekran w płaszczyźnie X na value("kam-x")
Centruj ekran w płaszczyźnie Y na value("kam-y")
|
W tym zdarzeniu ustaliliśmy, że wartości zmienne A i B naszej postaci, mają zawsze być równe pozycji X i Y naszej postaci, dzieląc, mnożąc i dodając odpowiednie wartości liczbowe, które są zależne od rozmiaru naszego okna gry.
Pozwólcie, że wyjaśnię to dokładniej:
Mamy np. obliczenie '320*320+160'. Co oznaczają te liczby?
Otóż:
320 - szerokość (w pixelach) naszego okienka gry, a
160 - 1/2 szerokości (w pixelach) naszego okienka gry (aby głębiej poznać ten mechanizm, możesz pobawić się tymi obliczeniami i poobserwować skutki).
...analogicznie z wielkością Y.
Ustaliliśmy również, że pozycja X i Y naszego obiektu kamery, ma być zawsze zależna od wartości zmiennych A i B naszej postaci. Dzięki temu, obiekt 'kamera' będzie się przemieszczał względem naszej postaci skokowo (co 320 i 200 px).
Dalej ustaliliśmy, że ekran ma być zawsze wycentrowany w płaszczyźnie X i Y na odpowiednie wartości liczników 'kam-x' i 'kam-y'. Liczniki te, posłużą nam jako miernik płynności (ale o tym później...).
Kolejnym krokiem jest stworzenie następujących zdarzeń:
| 2 |
• Jeśli pozycja X obiektu 'kamera' jest większa (>) od wartości licznika 'kam-x'
Dodaj 5 do licznika 'kam-x'
|
Gdy pozycja X naszego obiektu kamery będzie większa od wartości licznika 'kam-x', to do jego wartości będzie dodawało się 5. Zamiast piątki, możemy użyć innej. Pamiętać jednak musimy, że im większa wartość dodawana, tym płynność będzie mniej wyrazista. Myślę, że wartość 5 jest optymalna w tym przypadku, dlatego jej użyłem.
Dalej jedziemy analogicznie:
| 3 |
• Jeśli pozycja X obiektu 'kamera' jest mniejsza (<) od wartości licznika 'kam-x'
Odejmij 5 do licznika 'kam-x'
|
Czas na pozycje Y. Znów analogicznie:
| 4 |
• Jeśli pozycja Y obiektu 'kamera' jest większa (>) od wartości licznika 'kam-y'
Dodaj 5 do licznika 'kam-y'
|
...i...
| 5 |
• Jeśli pozycja Y obiektu 'kamera' jest mniejsza (<) od wartości licznika 'kam-y'
Odejmij 5 do licznika 'kam-y'
|
Na samym końcu, możemy stworzyć warunek, który ukrywać będzie nasz obiekt 'kamera'.
Zakończenie
Czas uruchomić nasz silniczek i cieszyć się uzyskanym efektem. Powinno wyjść Ci coś
takiego.Jeśli masz jakieś wątpliwości - nie krępuj się - pisz w komentarzach.
Pozdr!
artykuł napisał Tomasz (Tropik) Gaffke - GafFame Arts 2009, Kopiowanie i rozpowszechnianie tylko za zgodą autora.
Ostatnio edytowane 13 grudnia 2009, 19:23 przez
Tropik