Próbuję stopniowo zmniejszać prędkość obiektu za pomocą właściwości "tłumienia". Następnie chcę przesunąć pozycję obiektu za pomocą prędkości. Wygląda to mniej więcej tak:Szybkość tłumienia z deltaTime?
velocity.x *= velocity.damping;
velocity.y *= velocity.damping;
x += velocity.x;
y += velocity.y;
nie mogły być znacznie prostsze niż i to działa dobrze, ale tutaj jest mój problem: Używam zmienną deltaTime, który zawiera ilość czasu (w sekundach) , że trwała ostatnia aktualizacja mojej pętli gier. Stosując prędkość jest dość prosta:
x += velocity.x * deltaTime;
y += velocity.y * deltaTime;
Ale jak mogę odpowiadać za deltaTime kiedy pomnożyć właściwość tłumienia? Moim pomysłem było, aby znaleźć przemieszczenie w X lub Y i pomnożyć deltaTime się, że podobnie jak to:
velocity.x += (velocity.x * velocity.damping - velocity.x) * deltaTime;
velocity.y += (velocity.y * velocity.damping - velocity.y) * deltaTime;
Okazuje się, że nie działa. Naprawdę nie rozumiem dlaczego, ale wyniki są różne, gdy testuję. Jeśli po prostu zignoruję tłumienie lub ustawię na 1.0, wszystko działa, więc problem musi być w dwóch ostatnich liniach.
Dlaczego odejmujesz prędkość w ostatnim segmencie kodu? – Matthias
(velocity.x * velocity.damping) to nowa prędkość.x. Odejmuję od tego oryginalną prędkość. X, aby uzyskać różnicę. – user1925315