Buduję grę z graczami i pociskami.
Chcę wystrzelić pocisk z P1 do P2. Dotarcie do P2 zawsze powinno zająć dokładnie pięć sekund. Pocisk powinien również śledzić P2. Jeśli P2 odsunie się dalej, pocisk musi przyspieszyć, aby spełnić ograniczenie czasowe. Jeśli P2 przesunie się w lewo, pocisk musi przesunąć się w lewo (i również zmienić prędkość). Jeśli P2 zbliży się do P1, pocisk musi zwolnić.
czy to możliwe? Jaki jest najlepszy sposób na osiągnięcie tego?
Obecnie nie mam klasy Vector2D (to właściwie nie jest gra, ale analogia działa dobrze), więc jeśli to możliwe, chciałbym rozwiązania, które nie wymaga takiej.
Edycja: To właściwie nie jest pocisk. :)
Dzięki!
Odpowiedzi:
Edycja jest uspokajająca. :)
Dobra, oto prosta pętla aktualizacji ...
Zakładając, że kiedy wystrzelimy pocisk, zainicjujemy
remainingFlightTime = 5f
wtedy ...źródło
Dlaczego nie obliczyć pozycji i zaktualizować docelowego miejsca docelowego, gdy się zmienia?
Być może będziesz musiał spojrzeć na to, jak działa Lerping, ale wyglądałoby to mniej więcej tak:
przez przeciąganie zasadniczo zmieniasz pozycję obiektu w określonym czasie, abyś mógł powiedzieć, że jesteś w 50% drogi od A do B i obiekt zostałby tam umieszczony. Lerping jest bezpośredni, więc zawsze będziesz zbliżał się do celu (jak chcesz w komentarzach).
źródło