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.
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).
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.
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.
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.
@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.
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: 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.
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).
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.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.