Ermitteln des Geschwindigkeitsvektors aus Positionsvektoren

Ich habe mir eine Reihe ähnlicher Fragen angesehen, und ich kann anscheinend keine finden, die meine Frage besonders beantwortet. Ich programmiere ein einfaches 3D-Spiel und versuche, dem Spieler das Aufheben und Bewegen von Objekten auf meiner Karte zu ermöglichen. Ich möchte im Wesentlichen einen Geschwindigkeitsvektor erhalten, der das physische Objekt in einem Abstand von den Augen des Spielers "schiebt", wohin auch immer sie schauen. Hier istein Beispiel Dies geschieht in einem anderen Spiel (der Spieler hält einen Stuhl vor die Augen).

Dazu finde ich die Blickwinkel des Spielers heraus, ermittle den Vorwärtsvektor aus den Winkeln und berechne die Geschwindigkeit des Objekts. Hier ist meinArbeiten Code:

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

Das ist alles großartig, aber ich möchte meine Mathematik so umwandeln, dass ich einen Impuls anwenden kann. Anstatt dem Objekt eine völlig neue Geschwindigkeit zuzuweisen, möchte ich seiner vorhandenen Geschwindigkeit eine gewisse Geschwindigkeit hinzufügen. Angenommen, ich habe die aktuelle Geschwindigkeit. Welche Art von Mathematik brauche ich, um die Geschwindigkeit zu "addieren"? Dies ist im Wesentlichen eine Frage der Spielphysik. Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage