W mojej grze mobilnej główny bohater musi skoczyć do określonego punktu y, zanim zacznie ponownie spadać z powodu grawitacji. Jak mogę obliczyć prędkość y potrzebną do osiągnięcia (w szczycie) danej pozycji y przy danej grawitacji?

Próbowałem to zrobić z animacją zamiast fizyki arcade, ponieważ było to dokładnie to, czego potrzebowałem (odległość przebyta w czasie z efektem podobnym do grawitacji), ale wydajność nie była dobra i ciągle się rozpryskiwała.

Obecnie używam Phasera 2.6.2. Dzięki!

2
Kody R. 30 październik 2018, 21:53

1 odpowiedź

Najlepsza odpowiedź

W grach istnieją 2 rodzaje czasu: czas oparty na cyklu i deltaTime.

W scenariuszu opartym na cyklach fizyka nie zmienia się w celu uwzględnienia opóźnienia, więc najlepszym rozwiązaniem jest to:

Zaczynasz od sekwencji liczb, w której łączysz grawitację z poprzednią liczbą w sekwencji, aż suma będzie równa żądanej wysokości.

Na przykład użyję wysokości = 75, grawitacji = 5 i siły skoku=unknown

(5+10+15+20+25)=75

Siła skoku potrzebna do osiągnięcia tej wysokości będzie ostatnią liczbą w sekwencji, czyli „25”.

W scenariuszu deltaTime (używanym w tym przypadku) fizyka jest abstrakcyjna, aby spróbować dostosować się do czasu.

Tak więc, jeśli masz 5 fps, będziesz miał 5 cykli na sekundę. jeśli masz 20 fps, będziesz miał 20 cykli na sekundę; więc ta abstrakcja sprawia, że ​​powyższe jest nieistotne.

Zamiast tego użyj standardowego wzoru na grawitację: wysokość = prędkość^2 / (2 * grawitacja)., ponieważ będzie to lepiej modelować wzory używane przez silniki czasu delta.

2
Nosajimiki 31 październik 2018, 16:54