Metoda odradzania wroga w strzelance odgórnej

20

Pracuję nad odgórną strzelanką podobną do DoDonPachi , Ikaruga itp. Ruch aparatu przez świat jest obsługiwany automatycznie, a gracz może poruszać się wewnątrz widocznego obszaru kamery.

Po drodze wrogowie są skryptowani, aby spawnować się w określonych punktach na ścieżce. Choć brzmi to prosto, widziałem dwa sposoby zdefiniowania tych punktów:

  1. Pozycja kamery: „wyzwala” spawnowanie, gdy kamera mija punkty
  2. Czas na ścieżce: „30 sekund za, spawnuj 2 wrogów”

W obu przypadkach zostaną określone pozycje względem kamery, a także zachowanie wroga.

Sposób, w jaki to widzę, sposób definiowania tych punktów będzie miał bezpośredni wpływ na działanie „edytora poziomów” lub tego, co masz.

Czy byłyby jakieś korzyści z jednego podejścia nad drugim?

Chris Waters
źródło

Odpowiedzi:

7

Sugerowałbym umieszczenie pozycji odradzania faktycznie na mapie tła jako węzłów widocznych z jakiegoś edytora map. Możesz reprezentować spawn shmup za pomocą dwóch zmiennych:

  1. Położenie, z którego są najpierw widoczne, co najlepiej jest wizualizowane jako punkt
  2. Odległość od dolnego ekranu, kiedy powinieneś je spawnować.

Następnie możesz zwizualizować odległość od dołu ekranu jako pionową linię skierowaną w dół od węzła spawnowania (który można zobrazować jako szarą wersję wroga lub coś w tym rodzaju). Kiedy dolna część ekranu dotknie tej linii, odrodzi się. Pozwala to na wykonanie wszystkich edycji wroga całkowicie w jakimś edytorze wizualnym i daje przegląd całego przebiegu gry.

Ben Zeigler
źródło
Re 2) Oczywiście, przy eksporcie należy odwrócić kod (tj. W wierszu, jakie punkty odradzania powinny stać się aktywne, ponieważ w tym systemie trzeba być świadomym niektórych punktów odradzania, zanim staną się widoczne. Szczegół, jest to rzeczywiście najbardziej logiczny sposób
Kaj,
1
Uwaga: upewnij się, że używasz edytora, który pozwala łatwo przesuwać węzły zbiorczo. Podczas ustawiania poziomu shmup będziesz wsuwał i usuwał wrogów, a także nieustannie dostosowywałeś czasy na środku swojego poziomu, a konieczność przesunięcia wszystkich swoich jednostek jeden po drugim zabije cię.
ZorbaTHut
Uwielbiam ten pomysł, ponieważ naprawdę znacznie ułatwi edycję, co zawsze jest plusem
Chris Waters
7

Wystarczy jednak, że pozycja aparatu do odrodzenia byłaby prawdopodobnie bardziej elastyczna, ponieważ można modyfikować ścieżkę bez martwienia się o duży efekt domina.

Jeśli idziesz z czasem odradzania, dodanie lub usunięcie ścieżki będzie ogromnym problemem, ponieważ będziesz musiał zmodyfikować wiele odrodzeń wroga.

Kolejny problem, jaki widzę, to zmiana prędkości aparatu. Czy naprawdę chcesz iść i dostosowywać spawn wroga tylko dlatego, że sprawiłeś, że kamera porusza się trochę szybciej lub wolniej? Ponadto musisz przebrnąć przez poziom okropnie wiele razy, aby znaleźć czasy odrodzenia lub poprawki dla nich.

David Young
źródło
2

Zdecydowanie nie polecam wcale przesuwać „kamery”; zawsze rozważaj gracza i wrogów w tej samej stałej przestrzeni współrzędnych. Zarówno wrogowie, jak i przewijanie w tle powinny być dopasowane do niezależnej osi czasu. Ułatwia całą matematykę.


źródło
W połowie się z tobą zgadzam. Zdecydowanie fizyka shmup jest fałszywa i opiera się na tym, że statek nie porusza się do przodu. To powiedziawszy, pytanie jest nadal aktualne, ponieważ masz do rozważenia aparat itp.
Iain
Rzeczywiście, nie unieważnia pytania. Nadal jest czas w porównaniu z (wirtualną) odległością. Niezależnie od tego, czy przesuwasz odtwarzacz do przodu, czy tło do tyłu, to tylko warstwa konceptualna. Poza tym oddzielenie ich w celu ułatwienia matematyki może znacznie utrudnić inne rzeczy, takie jak umieszczanie wrogów w tle (wieżyczki), unikanie obiektów w tle lub kolidowanie w tle.
Kaj
1

Wybrałbym pozycję kamery. Użycie czasu sprawi, że będzie ci trudniej, jeśli chcesz, aby ścieżka wroga pasowała do grafiki w pliku mapy (np. Wrogowie podążający zakrzywioną ścieżką). Pozwala także przyspieszyć przewijanie bez zmiany punktów odradzania.
Drugą stroną jest to, że przyspieszenie zwoju sprawi, że wrogowie przyjdą szybciej. Co można uznać za plus (przyspieszenie oznaczałoby trudność) lub ujemny (szybkość przewijania wpływa na tempo).

Kaj
źródło
1

Pracuję również nad kosmiczną strzelanką. Użyłem pustego obiektu GameController. dodano składnik skryptu o nazwie GameController.cs, który kontroluje część spawnującą, np.

  • Przechowuj listę punktów odradzania [tablica]
  • Daj każdemu wrogowi określoną wagę i punkty. kontrola tempa odradzania się wroga, jeśli wróg ma dużą wagę, ma dobrą możliwość wyboru na każdym poziomie.
  • Następnie za każdym razem sprawdzaj bieżący poziom i wybór losowej liczby, jeśli liczba jest mniejsza niż waga, odradzaj skojarzenia wroga. Mam nadzieję, że to pomogło.

http://www.youtube.com/watch?v=VqFJsU63GRo

jquery404
źródło
0

Umieściłbym je na dużym tle mapy i umieściłbym ich początkową ścieżkę ruchu na tej mapie. W ten sposób mogłem później zmienić ścieżkę kamery w znaczący sposób, zamiast osobno zmieniać zarówno ścieżkę, jak i czas.

wolfdawn
źródło