Cześć!
Mam następujący problem: piszę grę w której pewien obiekt powinien poruszać się wyznaczoną drogą. Droga może mieć zakręty. W grze wykorzystuję mapę kafelkową.
Obiekt przechowuje informację o kierunku poruszania się jako kąt (float direct;). Porusza się z wyznaczoną prędkością podaną w pikselach na sekundę.
Teraz chciałbym, żeby obiekt (na zdjęciu ludzik) zmienił dynamicznie kierunek swojej podróży tak, by z początkowej pozycji przy zmianie kafelka dotarł na środek drugiego kafelka po łuku.
Mam więc pytanie jak dynamicznie zmieniać kąt kierunku poruszania się, by obiekt zrobił ładny łuk a nie gwałtownie zmienił kierunek z 90 stopni na 0 stopni?
Problemem może być to, że co jakiś czas mogą pojawić się rozbieżności w pozycji obiektu na kafelku i może on być np. trochę niżej na kafelku lub trochę wyżej (stąd dwie przykładowe strzałki na obrazku).
Domyślam się, że istotne tu będą następujące dane:
odległość na osi X
odległość na osi Y
różnica w zmianie kąta kierunku poruszania się (między obecnym a tym, do którego dążę)
i chyba szybkość poruszania się.
Zależy mi również, by nie wykorzystywać tutaj informacji o pozycji startowej (początkowej - przy zmianie kafelka), tylko bazować na aktualnej pozycji obiektu, jego aktualnej odległości od celu i różnicy kąta.
Czy możecie mi pomóc jak to rozwiązać?
Całość problemu ilustruje zamieszczony obrazek (mam nadzieję, że jest czytelny).
Z góry serdecznie dziękuję.