Mam nadzieję, że wszyscy graliśmy w Zelda: A Link to the Past, proszę mnie poprawić, jeśli się mylę, ale chcę naśladować tego rodzaju ruchy postaci 2D z góry z odrobiną korekty. Dokonano tego w innych grach, ale uważam, że ten odnośnik byłby najłatwiejszy do odniesienia. Mówiąc dokładniej, rodzaj ruchu i korekty, o której mówię, to:
- Ruch swobodny nie ogranicza się do ruchu opartego na kafelkach, takiego jak Pokemon i inne gry, w których jedno dotknięcie pola ruchu przesuwa cię o jedno pole w tym głównym kierunku. Ten ruch pływający powinien umożliwiać ruch po przekątnej.
- Jeśli idziesz na zachód i dojdziesz do ściany, która jest ukośna w stylu północno-wschodnim / południowo-zachodnim, jesteś skorygowany do ruchu południowo-zachodniego, nawet jeśli nadal przytrzymasz lewy (zachodni) przycisk kontrolera. Powinno to działać w przypadku korekcji obu przekątnych w obu kierunkach.
- Jeśli dzieli Cię kilka pikseli od wejścia prosto do drzwi lub korytarza, jesteś skorygowany do przejścia korytarzem lub korytarzem, tzn. Wpadnięcie w kąt powoduje, że jesteś wepchnięty do korytarza / drzwi.
Poszukiwałem skutecznych sposobów na osiągnięcie tego i nie miałem szczęścia. Dla jasności mówię o ruchu ludzkiej postaci, a nie ruchu NPC. Czy ich zasoby są dostępne w tego rodzaju ruchu? Równania lub algorytmy wyjaśnione na wiki czy coś takiego?
Używam frameworka XNA, czy jest w tym coś, co mogłoby pomóc?
Możliwą odpowiedzią na drugi punkt jest rzutowanie wektora ruchu gracza wzdłuż wektora ściany za pomocą iloczynu punktowego (ab * znormalizowany (b)). Następnie otrzymujesz wektor, który mówi ci, jak daleko przesunąć gracza w kierunku ściany, a jeśli przesuniesz gracza o ten wektor, dostaniesz „poślizg” wzdłuż ściany. Pracował dla mnie dobrze w poprzednim projekcie gry.
źródło
Świetna odpowiedź dla Josha, ale dodam kilka sugestii: - Aby uzyskać więcej informacji na temat przesuwania się po ścianach, sprawdź moje pytanie - z tej odpowiedzi udało mi się sprawić, że działa naprawdę ładnie. - Jeśli się nie mylę, podczas chodzenia po ekranie Link z łatwością dopasuje się do najbliższego całego poziomego kwadratu siatki. W ten sposób, gdy dojdziesz do drzwi, bardziej prawdopodobne jest, że będziesz prawidłowo ustawiony (może się mylić). - Aby ułatwić przejście przez drzwi, upewnij się, że pole kolizyjne twojej postaci jest znacznie mniejsze niż szerokość drzwi.
źródło
Aby skorygować wchodzenie do drzwi, możesz sprawić, że obiekt kolizji dla drzwi będzie nieco większy niż obraz drzwi. Spowodowałoby to ten sam efekt zaproponowany przez Josha, ale bez konieczności obliczania odległości od prostokąta kolizyjnego ściany.
źródło