Arcane.pl
Portal twórców map i modów:
WarCraft 3 StarCraft 2 i innych gier
Napisano: 01.05.2010
Tutorial na temat tworzenia systemu kierowania bohaterem przy pomocy klawiatury
No to lecimy. Na wstępie potrzebujemy kilku zmiennych (oczywiście nazewnictwo jest dowolne):
1. Bohater - typ zmiennej, jednostka
2. KierunekRuchu - typ zmiennej, rzeczywista (R)
3. UpNacisniete - typ zmiennej, boolean (BDLBQ)
4. DownNacisniete - typ zmiennej, boolean (BDLBQ)
5. LeftNacisniete - typ zmiennej, boolean (BDLBQ)
6. RightNacisniete - typ zmiennej, boolean (BDLBQ)
7. PozycjaBohatera - typ zmiennej, punkt
8. PunktDocelowy - typ zmiennej, punkt
Jak mamy już zmienne możemy zabrać się za wyzwalacze. Najpierw ustalenia początkowe:
Wydarzenia Map initialization Warunki Akcje Jednostka - Create 1 Piechur for Gracz 1 (Czerwony) at (Center of (Playable map area)) facing 90.00 degrees Set Bohater = (Last created unit) Kamera - Lock camera target for Gracz 1 (Czerwony) to Bohater, offset by (0.00, 0.00) using Domyślny obrót |
Ten wyzwalacz tworzy nam jednostkę, którą przypisujemy do zmiennej bohater oraz ustawia kamerę na bohaterze.
Dalej musimy za pomocą zmiennych stwiedzić kiedy gracz naciska bądź zwalnia przyciski strzałek na klawiaturze. Aby to zrobić tworzymy wyzwalacze:
Naciska gora Wydarzenia Gracz - Gracz 1 (Czerwony) Naciska the Strzałka w górę key Warunki Akcje Set UpNacisniete = TAK Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Naciska dol Wydarzenia Gracz - Gracz 1 (Czerwony) Naciska the Strzałka w dół key Warunki Akcje Set DownNacisniete = TAK Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Naciska lewo Wydarzenia Gracz - Gracz 1 (Czerwony) Naciska the Lewa strzałka key Warunki Akcje Set LeftNacisniete = TAK Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Naciska prawo Wydarzenia Gracz - Gracz 1 (Czerwony) Naciska the Strzałka w prawo key Warunki Akcje Set RightNacisniete = TAK Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Puszcza gora Wydarzenia Gracz - Gracz 1 (Czerwony) Zwalnia the Strzałka w górę key Warunki Akcje Set UpNacisniete = NIE Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Puszcza dol Wydarzenia Gracz - Gracz 1 (Czerwony) Zwalnia the Strzałka w dół‚ key Warunki Akcje Set DownNacisniete = NIE Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Puszcza lewo Wydarzenia Gracz - Gracz 1 (Czerwony) Zwalnia the Lewa strzałka key Warunki Akcje Set LeftNacisniete = NIE Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Puszcza prawo Wydarzenia Gracz - Gracz 1 (Czerwony) Zwalnia the Strzałka w prawo key Warunki Akcje Set RightNacisniete = NIE Wyzwalacz - Run Ruch <gen> (ignoring conditions) |
Jak widać, na końcu każdego z powyższych wyzwalaczy jest akcja uruchamiająca wyzwalacz Ruch, który to odpowiada za odpowiednie przemieszczanie się naszego bohatera. Sam wyzwalacz ruch wygląda natomist tak:
Ruch Wydarzenia Czas - Every 2.00 seconds of game time Warunki Akcje Wyzwalacz - Turn on (This trigger) If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki UpNacisniete Równa się TAK LeftNacisniete Równa się NIE RightNacisniete Równa się NIE DownNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 90.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki UpNacisniete Równa się TAK LeftNacisniete Równa się TAK RightNacisniete Równa się NIE DownNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 135.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki LeftNacisniete Równa się TAK UpNacisniete Równa się NIE DownNacisniete Równa się NIE RightNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 180.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) JeĹ›li - Warunki DownNacisniete Równa się TAK LeftNacisniete Równa się TAK UpNacisniete Równa się NIE RightNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 225.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki DownNacisniete Równa się TAK LeftNacisniete Równa się NIE RightNacisniete Równa się NIE UpNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 270.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki DownNacisniete Równa się TAK RightNacisniete Równa się TAK LeftNacisniete Równa się NIE UpNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 315.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki RightNacisniete Równa się TAK DownNacisniete Równa się NIE UpNacisniete Równa się NIE LeftNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 0.00 Albo - Akcje If (All Conditions are True) then do (Then Actions) else do (Else Actions) Jeśli - Warunki UpNacisniete Równa się TAK RightNacisniete Równa się TAK DownNacisniete Równa się NIE LeftNacisniete Równa się NIE To - Akcje Set KierunekRuchu = 45.00 Albo - Akcje Wyzwalacz - Turn off (This trigger) Jednostka - Order Bohater to Stop Skip remaining actions set PozycjaBohatera = (Position of Bohater) set PunktDocelowy = (PozycjaBohatera offset by 1024.00 towards KierunekRuchu degrees) Jednostka - Order Bohater to Ruch PunktDocelowy Custom Script: call RemoveLocation(udg_PozycjaBohatera) Custom Script: call RemoveLocation(udg_PunktDocelowy) |
Wyzwalacz Ruch powinien być początkowo wyłączony. Ponieważ ważne jest, aby wyzwalacz działał tylko podczas ruchu jenostki (optymalizacja :wink:), stąd też stosujemy w nim akcje włączania i wyłaczania. Ogólna zasada działania tego wyzwalacza jest następująca (dla tych co go nie rozumieją):
1. Najpierw sprawdza, które zmienne są na TAK (czyli odpowidnie przyciski są naciśnięte) i na ich podstwie ustala kierunek, w którym ma się udać bohater). Po ustaleniu kierunku i zapisaniu go w zmiennej (KierunekRuchu), wyzwalacz rozkazuje bohaterowi, aby udał się w tym właśnie kierunku.
2. Jeżeli okazuje się, że wszystkie zmienne są na NIE (gracz nie naciska żadnego przycisku), wyzwalacz wyłącza się, nakazuje bohaterowi zatrzymać się i opuszcza pozostałe akcje.
Wyzwalacz uruchamia się co 2 sekundy, ponieważ musi ponownie wydać rozkaz ruchu (bądź stopu) zanim bohater dotrze do miejsca wskazanego przez akcję Order Unit. Oczywiście czas ponownego uruchomienia może zostać zwiększony, ale wtedy należy pamiętać, aby rozkazać przemieścić się bohaterowi na większą odległość.
(w załączniku mapa przykładowa)
./teksty/systemchodzenia/mapa.rar
|
Na Forum jest 10 użytkowników :: 0 zarejestrowany i 10 gości (oparte na użytkownikach aktywnych przez ostatnie 5 minut) Zarejestrowani użytkownicy: W ciagu ostatnich 24 godzin forum odwiedziło 0 użytkowników: |