Biorąc pod uwagę powyższy obraz z kafelkami podzielonymi na pudełka 32x32, mam byt, który jest oznaczony dla „agro” pobliskich graczy, którzy się do niego zbliżają. Chciałbym, aby ten potwór idealnie ścigał gracza (i nadal go ścigał przez jakiś czas). Obecnie mój jedyny ruch to mój prosty interpolator dla zdalnych jednostek i działa to, ponieważ luki między aktualizacjami ruchu są raczej niewielkie.
Nie mogę po prostu powiedzieć klientowi, że potwór chce przejść do pozycji, w której się znajduje, ponieważ spowoduje to, że byt porusza się znacznie szybciej niż powinien (można to prawdopodobnie rozwiązać za pomocą pewnej matematyki do interpolacji co -skuteczne), ale co ważniejsze, nie wygląda realistycznie i może przycinać ściany! Nie chcę symulować całego ruchu na serwerze, jeśli można tego uniknąć ... chociaż myślę, że mógłbym, ale nadal nie rozwiązałoby to problemu z przycinaniem. Podejrzewam, że rozwiązanie polega na wyszukiwaniu ścieżek i wysyłaniu okresowych aktualizacji węzłów klienta i umożliwieniu im symulacji ruchu, ale nie jestem pewien.
Dzięki!
źródło
W rzeczywistości jest to łatwe do zrobienia. Kierunkiem ruchu będzie pozycja docelowa minus aktualna pozycja. Wszystko, co musisz zrobić, to przeskalować ten wektor do żądanej prędkości ruchu. Powtórz każdą klatkę.
Musisz zasymulować ruch na serwerze. Skąd inaczej dowiesz się, że wszyscy gracze widzą to samo zachowanie?
Będziesz potrzebował podstawowego wyszukiwania ścieżek. A * jest standardem. Możesz obliczyć ścieżkę do celu, a następnie podążanie tą ścieżką to po prostu ustawienie wektorów ruchu jak wyżej. (Lub możesz użyć zachowań sterujących jak w odpowiedzi Byte56, co jest w zasadzie takie samo z kilkoma dodanymi dodatkami).
źródło