Я вот с физикой Юнити никак не могу подружиться

Вот сейчас. Использую Меканим. Делаю прыжок. Во время transition в состояние прыжка (их у меня несколько в зависимости от того стоит перс или идет) толкаю перса вверх силой. Типа так:
public void FixedUpdate()
{
...
foreach (string transition in __addForceTransition)
{
if(!ainf.IsUserName(transition)) continue;
__anim.applyRootMotion = false;
rigidbody.AddForce(Vector3.up * jumpHeight, ForceMode.Impulse);
__jumpStart = true;
break;
}
Прыгает. Однако в зависимости от его скорости прыгает на разную высоту! Если стоит - невысоко, если идет - гораздо выше.
Как горизонтальная скорость может влиять на действие силы по вертикали?
Иногда ни с того ни с сего вдруг вообще улетает в небеса! Зависимости таких "полетов" вычислить не смог.
Как его вообще толкать, так чтобы он подлетал на одну высоту не зависимо от предыдущих действий?