Mam Entity
instancję, która jest aktualizowana przy każdym zaznaczeniu gry. Załóżmy, że istota stale się rozwija. Chciałbym móc nadać kąt istoty funkcji, która powoduje, że porusza się ona w tym kierunku:
moveForward(90);
powinien sprawić, by przesunęli się w prawo. Jeśli zadeklaruję swoją rotację jako globalną int
, to zrobię to
moveForward(rotation);
rotation++;
sprawiłoby, że jego ruch śledziłby małe kółko.
W jaki sposób mogę to zrobić? Zakładam, że dotyczy to matematyki wektorowej; Nie znam żadnego, więc miłe byłoby krótkie wyjaśnienie.
źródło
Inna odpowiedź jest na razie błędna, aby poprawnie poruszać się po płaszczyźnie w oparciu o obrót, wykonaj następujące czynności:
Jednak polecam utworzenie zmiennej dla cos / sin, którą aktualizujesz tylko wtedy, gdy zmienia się obrót, więc nie obliczasz jej 4 razy tyknięciem.
StrafeSpeed poruszałby się z boku na bok, a prędkość do przodu do poruszania się do przodu wzdłuż rotacji.
edycja: tesselode robi to samo, tyle że nie ma ruchu z boku na bok.
źródło
Powiedziałeś, że aktualizacja zaznacza, więc zakładam, że nie masz zmiennej liczby klatek na sekundę. W takim razie:
x + = prędkość * matematyka. kąt (kąt)
y + = prędkość * matematyka.sin (kąt)
Jeśli używasz zmiennej liczby klatek na sekundę, musisz także pomnożyć przez czas delta.
źródło