Uzyskanie wektora prędkości z wektorów położenia

Spojrzałem na kilka podobnych pytań i nie mogę znaleźć takiego, który szczególnie odpowiada na moje pytanie. Koduję prostą grę 3D i próbuję pozwolić graczowi podnieść i przenieść obiekty wokół mojej mapy. Zasadniczo chcę uzyskać wektor prędkości, który „pcha” fizykę w pewnej odległości od oczu gracza, niezależnie od miejsca, w którym się znajduje. Otoprzykład tego dokonuje się w innej grze (gracz trzyma przed oczami obiekt krzesła).

Aby to zrobić, znajduję kąty oka gracza, a następnie odbieram wektor do przodu od kątów, a następnie obliczam prędkość obiektu. Tutaj jest mójpracujący kod:

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);
}

To wszystko świetnie, ale chcę przekonwertować moją matematykę, abym mógł zastosować impuls. Zamiast ustawiać całkowicie nową prędkość obiektu, chcę „dodać” pewną prędkość do istniejącej prędkości. Więc zakładając, że mam jego aktualną prędkość, jakiego rodzaju matematyki potrzebuję, aby „dodać” prędkość? To jest zasadniczo pytanie z fizyki gry. Dziękuję Ci!

questionAnswers(3)

yourAnswerToTheQuestion