Wesołe zabawy ze współrzędnymi

1. Wstęp

Operacje na współrzędnych to jedna z najważniejszych czynności przy robieniu wielu zaawansowanych skryptów w Rpg Makerze. Najbardziej przydaje się przy tworzeniu własnego systemu walki i 'strzelankach'. Opiszę, gdzie i jak można wykorzystać współrzędne.

Najpierw jednak zastanówmy się, czym w ogóle są współrzędne. Tak więc są to liczby określające położenie jakiegoś punktu w przestrzeni. Dziś zajmiemy się konkretnie określaniem położenia jakiejś postaci na naszej mapie. Mapy w Rpg Makerze są dwuwymiarowe. Mamy więc dwie współrzędne- X i Y. X określa odległość od lewej krawędzi mapy, Y od górnej. Dla ułatwienia obrazek:



Jak widzicie, wcale nie jest to takie trudne. Sprawdźmy na przykład położenie okna domku. Jego współrzędne to X=4, Y=4. Jednak w Rpg Makerze nie musimy się męczyć z liczeniem współrzędnych - wystarczy, że nakierujemy kursor na obiekt (lub na niego klikniemy w trybie edycji zdarzeń), a liczby pojawią się pod mapką.



2. Zmienne ze współrzędnymi

Okej, wiemy już czym są współrzędne. Stwórzmy na mapie poruszającego się potwora. Chcielibyśmy, by jego współrzędne były na bieżąco zapisywane do dwóch zmiennych. Jak to zrobić? Tworzymy nowy event i ustawiamy Trigger condition na 'Parellel Process'. W ten sposób zdarzenie będzie się wykonywało cały czas. Żeby zapisać współrzędną do zmiennej, wstawiamy komendę 'Variable Operations'.



Tak powinno być wszystko ustawione. Pierwsze pole to zmienna na której działamy. W naszym przypadku to zmienna 0001:X. Operation ustawiamy na 'Set Equal', to chyba oczywiste ;). Zajmijmy się polem 'Operand'. Zaznaczając 'Sprite', możemy pobierać różne właściwości obiektów. W tym wypadku, obiektem jest nasz potwór, a jego właściwością 'X Coordinate' (czyli współrzędna X). Podobną komendę wstawiamy dla współrzędnej Y, tyle że zmienną ustawiamy na 0002:Y a zamiast 'X Coordinate' wybieramy 'Y Coordinate'. To chyba jasne. Efekt końcowy:



Dodałem na końcu Wait 0.1 Sec, aby za bardzo nie obciążać programu :)

W dalszej części poradnika zajmiemy się wykorzystywaniem zmiennych w praktyce.

3. Zapamiętywanie położenia potworów

Trik przydatny do własnego systemu walki. Zauważcie, co się dzieje gdy gonią nas potwory i przechodzimy na sąsiednią mapkę. Gdy wrócimy, wrogowie są spowrotem tam, gdzie ich ustawiliśmy na mapie. A gdyby tak zrobić, by pojawiały się tam, gdzie ostatnio je widzieliśmy?

Tworzymy event, który będzie teleportował nas do innej mapki. Trigger Condition na 'Touched by Hero'. Wstawiamy tam komendę teleportu, chyba nie muszę opisywać jak to zrobić ;). Przed komendą teleportu wklejamy komendy z poprzedniego punktu poradnika - zapisywanie X i Y do zmiennych. Tak więc zanim gracz się teleportuje, gra zapamięta ostatnie współrzędne potwora.

Na mapce z potworem tworzymy kolejny event. Będzie sprawdzał, czy zostały wcześniej zapisane współrzędne potwora i będzie go umieszczał w odpowiednim miejscu. Trigger Condition ustawiamy na 'Auto Start'. Wstawiamy dwa warunki - czy zmienna 0001:X jest większa od 0 i czy zmienna 0002:Y jest większa od 0 (Condition Branch -> Variable, Number 0, Greather Than). Wewnątrz tych warunków wstawiamy Komedę Change Event Location i ustawiamy jak poniżej:



Ostatnią komendą, na samym końcu, już poza warunkami jest Earse Event. Dzięki niej event będzie się usuwał po ustawieniu potwora w odpowiednim miejscu. Jeszcze obrazek, jak to wygląda w całości:



4. Przesuwanie kamienia na przycisk

Taka fajna rzecz. Bohater przesuwa kamień, i gdy go umieści na przycisku to otworzą się drzwi. Najpierw tworzymy event kamienia. Dajemy mu jakaś grafikę, Trigger Condition zostawiamy na 'Action Key'. Sprawmy, by bohater mógł go przesunąć. Wstawiamy komendę Move Event.



Jak widać, niewiele potrzeba kombinować. 'Face Away From Hero' i "Move Forward' załatwia sprawę. Ważna rzecz - 'Ignore Impossible Move' musi być zaznaczone! W tym samym evencie, po komendzie ruchu wstawiamy komendę Wait 0.2 Sec - zaraz napiszę dlaczego. Następnie wstawiamy zapisywanie współrzędnych X i Y do zmiennych. Chyba nie muszę już pisać jak to zrobić, to to samo co w punkcie drugim poradnika, tyle że zamiast potwora jest event kamienia ;). Komenda wait była potrzebna po to, by współrzędne zapisywały się dopiero PO RUCHU kamienia, a nie przed.

Tworzymy drugi event - przycisk, no i dajemy mu grafikę przycisku. Ważne by ustawić Event Layer na 'Below Hero', wtedy będzie można na przycisk wejść i przesunąć na niego kamień. Event przycisku nie będzie się poruszał, więc nie ma sensu zapisywania jego współrzędnych do zmiennych. Po prostu zwyczajnie sprawdźmy jego X i Y. W moim przypadku X=10, Y=6.

Czas na trzeci event. Będzie on sprawdzał, czy kamień jest na przycisku. Ustawiamy Trigger Condition na 'Parellel Process'. Wstawiamy dwa warunki - czy zmienna X kamienia jest równa 10 i czy zmienna Y kamienia jest równa 6. Wewnątrz warunku wstawiamy jakieś zdarzenie, które otwiera drzwi - może to być choćby zmiana przełącznika 'Drzwi' na ON. Tak to wygląda w całości:



Gotowe ;).

5. Strzelanka

Coś dla zaawansowanych. Nie opiszę dokładnie, co trzeba robić, jedynie nakieruję ;). Otóż powinniśmy najpierw zrobić samo strzelanie - na przycisk AKCJI przełącznik STRZAŁ zmienia się na ON, a na bohaterze pojawia się animacja strzelania. Następnie tworzymy pierwszego wroga. Gdy przełącznik STRZAŁ jest na ON, trzeba porównywać jego współrzędne ze współrzędnymi bohatera - oddzielnie dla każdego kierunku bohatera. Przykładowo, gdy bohater jest skierowany w prawo to żeby trafić wroga, zmienna X wroga musi być większa od zmiennej X bohatera, a zmienne Y muszą być równe. Gdy bohater skierowany jest w dół, zmienna Y wroga musi być większa od Y bohatera, a X muszą być równe. Proponuję rozpisać sobie to na kartce. Gdy warunki są spełnione, wróg ginie lub trafi HP. Trochę tych warunków trzeba zrobić, ale efekty są niezłe :)

Foxer