Jak ustalić, czy postać wpadła w szczelinę nieskończonego biegacza / skoczka?

12

Buduję nieskończonego biegacza 2D. W grze postać przeskakuje z filaru na filar, a filary są generowane losowo. Mam to działa. Ale jak ustalić, czy postać nie wskoczyła na filar i wpadła w szczelinę między filarami? Filar ma zwykły prostokątny kształt.

SanSolo
źródło
OT: Myślałem, że to pytanie zostało opublikowane na rpg.SE i pomyślałem: „Jakiego rodzaju exploita znaleziono teraz? Nieskończony jak działa?”
o0 ”.

Odpowiedzi:

20

Dodaj prostokątny obszar na dole poziomu, niższy niż minimalna dopuszczalna wysokość platformy. Jeśli gracz przeciął ten region, spadł z platformy.

Mklingen
źródło
1
I czy ten prostokąt jest dzieckiem kamery, aby poruszał się wraz z kamerą i był zawsze obecny? To takie proste. Dzięki.
SanSolo
Nawet jeśli gracz nie powinien być w stanie spaść z poziomu, myślę, że jest to dobra ochrona, jeśli uda mu się jakoś to zrobić.
mucaho
5
Jeśli dosłownie sprawdzasz skrzyżowanie, upewnij się, że twoja postać nie może spaść tak szybko, aby przebić się przez powierzchnię (tj. Jedna z postaci całkowicie powyżej, a następna klatka całkowicie poniżej).
wchargin 16.04.15
2
Tak, odbytnica powinna sięgać tak daleko, jak to konieczne, aby tego uniknąć. Również sprawdzanie wysokości będzie działać, ale daje to elastyczność zmiany rozmiaru „regionu zabicia” w zależności od poziomu.
mklingen 16.04.15
6
Aby uniknąć „przecinania się” przez prostokąt, dlaczego nie prosty if (playerPos.x < minHeight)?
Cole Johnson
24

Jeśli Twoja gra przewija się tylko w poziomie, możesz sprawdzić, czy pionowa pozycja postaci znajduje się poniżej dolnej krawędzi sceny.

Jeśli gra również przewija się w pionie (prawdopodobnie w górę), możesz sprawdzić, czy gracz spadł poniżej dolnej krawędzi widoku (tj. Obszar sceny, który jest na ekranie lub w ognisku kamery).

Zasadniczo warunkiem śmierci jest sytuacja, gdy postać nie pozostanie „przed kamerą”. Kontrolując ruch kamery, będziesz mógł dostroić rozgrywkę. Na przykład, jeśli na etapie przewijania w pionie pozwolisz tylko, aby kamera „lekko gumowała” nieco w dół, a jednocześnie pozwalając na pełny ruch w górę, będziesz karać głębokie spadki poza ekran.

Jelle van Campen
źródło
Tak, to też jest łatwy sposób. Muszę tylko znaleźć najniższą pozycję. Tak, że postać może być.
SanSolo,
1
Poprawny! w przypadku przewijania w poziomie możesz po prostu sprawdzić pionowy rozmiar sceny w edytorze map. W przypadku przewijania w pionie można upewnić się, że kamera porusza się tylko w górę. W ten sposób, jeśli postać spadnie, znajdzie się poniżej pola widzenia kamery. Następnie możesz po prostu sprawdzić, czy pionowa pozycja postaci spada poniżej dolnej granicy widoku.
Jelle van Campen
@JellevanCampen: Nie musisz koniecznie ograniczać kamery do ruchu w górę. Możesz zabijać postacie, które nie pozostają „w kamerze”, lub pozwolić, aby kamera podążała za nimi.
Kaczka Mooing
Nie podoba mi się ta odpowiedź, ponieważ łączy ona kamerę bezpośrednio z granicami poziomów. Odpowiedź mklingen działa, nawet jeśli granice poziomu mają więcej niż jedną wysokość ekranu. Kamera może poruszać się w górę i w dół, aby skupić się na postaci, ale nie ma ryzyka, że ​​postać spadnie szybciej niż kamera, pozostanie na poziomie, ale nadal zderzy się z ramką graniczną przymocowaną bezpośrednio do kamery.
Kevin
2
@Kevin: Zgadzam się na ogólne gry, ale nie na generowane proceduralnie nieskończone scrollery. Na przykład, w pionowych scrollerach, będziesz musiał albo odradzać nowe pudełka i znikać z ekranów poza ekranem, albo będziesz musiał aktualizować pola, gdy kamera się porusza. Ponieważ warunek śmierci jest bezpośrednio związany z „nie pozostaniem w kamerze”, sensowne jest powiązanie go z kamerą. Bardziej wydajne jest także sprawdzanie granic kamery, niż tworzenie nowych obiektów i uciekanie się do sprawdzania kolizji.
Jelle van Campen
2

Alternatywnie do sprawdzenia współrzędnej pionowej można po prostu sprawdzić prędkość pionową. Jeśli znak spada szybciej niż jakiegoś progu, zawierać nie żyją (nawet jeśli tam jest jakiś platforma na tyle niska, aby jeszcze osiągnąć, skutki byłyby śmiertelne).

Oczywiście działa to tylko wtedy, gdy twoja gra prawidłowo wdraża podstawową fizykę swobodnego spadania, tzn. Prędkość opadania faktycznie wzrasta podczas upadku, tak jak ma to miejsce w rzeczywistości (aż do prędkości końcowej).

po lewej stronie
źródło
1

Jeśli masz wysokość filarów, możesz znaleźć najniższą istniejącą i porównać ją z pionową pozycją gracza. Jeśli znajdzie się poniżej najniższego filaru, nie ma szans na odzyskanie. Możesz ograniczyć ten czek tylko do słupków za i przed graczem.

Przykład: Mamy 3 filary o wysokościach [10, 20, 40]. Gracz skoczył na filar o wysokości 40, skacze do przodu do 20. Czuł różnicę między 40 a 20, ma teraz wysokość 15. Oznacza to, że czuł się. Aby uzyskać mniej rygorystyczną kontrolę, poczekaj, aż będzie poniżej 10.

Polan
źródło
Wszystkie filary są tego samego rozmiaru.
Różna
0

Sprawdzaj, jak długo upadła postać. (tj. jak długo oni poruszali się „w dół”). Kiedy minęło więcej czasu niż ekran, z definicji spadły ze sceny, tak?

Allen Gould
źródło