Zmiana współrzędnych kamery
Wstęp
Hej,
Pomyślałem, że się podzielę skryptami, które wymyśliłem podczas tworzenia mojej gry FloppyCat.
Dla przypomnienia. Skrypty w MV są tworzone w języku JavaScript (skrótowo JS) i można je implementować (czyli wrzucać)
do własnego pluginu
( Jak tworzyć plugin? ) (kliknij)
albo wykorzystać na zdarzeniach.
Ten w moim przypadku najlepiej sprawdził się, gdy używany był w pluginie, ale jeśli chcecie to możecie probować to ustawiać na zdarzeniach.
Opis
Czasami (a przeważnie w platformówkach) przydaje się przesunąć na stałe współrzędne kamery, tak aby postać była widoczna bardziej
w rogu ekranu lub w innym miejscu.
Kod
Tak na prawdę to sprawa jest prosta. Wystarczy podmienić zwracaną wartość w Game_Player.prototype.centerX, które domyśłnie
robi wyśrodkowanie w osi X oraz zmienić wartość w Game_Player.prototype.centerY, który robi to samo, ale w osi Y.
Obie funkcje domyślnie wyglądają tak:
W razie czego $gameMap.tileWidth() oraz $gameMap.tileHeight() domyślnie zwracają wartość 48 (to jest wielkość kratki 48x48)
Dla X bierze szerokość graficzną dzieli ją przez szerokość kratki po czym to zmniejsza o 1, a na końcu to wszystko dzieli przez 2;
Dla Y w zasadzie dzieje się to samo tylko że zamiast szerokości mamy wysokość.
Domyślne działanie tych funkcji jest takie, aby kamera zawsze starała się być na środku ekranu;
Ja w FloppyCat zrobiłem bardzo prostą rzecz, dzięki, której uzyskałem efekt taki, że kotek jest widoczny 3 kratki od lewej części ekranu.
W moim pluginie wpisałem to:
Czyli dosłownie zamieniłem
(Graphics.width / $gameMap.tileWidth() - 1) / 2.0; na liczbę
3 i ta cyferka oznacza ilość klatek od lewej.
Jeśli chodzi o centerY to tego nie ustawiałem, ale jestem winny powiedzenia jak to działa.
Co z centerX nie ma prolemu że to działa od lewej strony, co z centerY musze powiedzieć, że to działa od góry.
Czyli punkt najwyżej położyny jest równy 0, a ten najniżej... no w sumie każdy może mieć inaczej,
Także jeśli chcecie ustawić centerY to pamiętajcie, że to liczy od góry.
Jeśli chcecie uzyskać, aby efekt był zapisany wzorem to najłatwiej będzie pobawić się tym co już domyślnie mamy.
Np. zmieniając dzielnik 2.0 na inne liczby np. 3.0 aby liczyło po "jednej-trzeciej", albo 4.0 aby kamera była w ćwiartce.
itd. - możliwości jest dużo.
Zakończenie
Myślę, że ten skrypt to nic skomplikowanego, a może okazać sie pomocny przy
tworzeniu różnych mini gier albo platformówek.
Autor: EnterVPL
Email:
entervpl@gmil.com