Получение вектора скорости из векторов положения

Я посмотрел на кучу похожих вопросов, и я не могу найти тот, который конкретно отвечает на мой вопрос. Я пишу простую трехмерную игру и пытаюсь позволить игроку подбирать и перемещать объекты вокруг моей карты. По сути, я хочу получить вектор скорости, который будет «отталкивать» физический объект от глаз игрока, куда бы они ни смотрели. Вотпример это делается в другой игре (игрок держит лицо стула перед глазами).

Для этого я выясняю углы зрения игрока, затем получаю прямой вектор от углов, а затем вычисляю скорость движения объекта. Вот мойработает код:

void Player::PickupOtherEntity( Entity& HoldingEntity )
{
    QAngle eyeAngles = this->GetPlayerEyeAngles();
    Vector3 vecPos = this->GetEyePosition();
    Vector3 vecDir = eyeAngles.Forward();

    Vector3 holdingEntPos = HoldingEntity.GetLocation();

    // update object by holding it a distance away
    vecPos.x += vecDir.x * DISTANCE_TO_HOLD;
    vecPos.y += vecDir.y * DISTANCE_TO_HOLD;
    vecPos.z += vecDir.z * DISTANCE_TO_HOLD;

    Vector3 vecVel = vecPos - holdingEntPos;
    vecVel = vecVel.Scale(OBJECT_SPEED_TO_MOVE);

    // set the entity's velocity as to "push" it to be in front of the player's eyes
    // at a distance of DISTANCE_TO_HOLD away
    HoldingEntity.SetVelocity(vecVel);
}

Все это прекрасно, но я хочу преобразовать свою математику, чтобы я мог применить импульс. Вместо того, чтобы устанавливать совершенно новую скорость для объекта, я хочу «добавить» некоторую скорость к существующей скорости. Итак, предположим, что у меня есть текущая скорость, какая математика мне нужна, чтобы «добавить» скорость? По сути, это вопрос физики игры. Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос