Относительно недавно делал функцию для бега чисто на синхре (так и не доделал, а исходник на сломанном ПК). Насколько помню делал так (все делалось на плеер синхре): взял под основу функу runToPoint, переводил значение xAngle в кватернион, отправлял upDownKey, делил расстояние на отрезки и рассчитывал как-то мувспид и отправлял его к каждому отрезку (Мб залупа, но ладно)