Obteniendo el vector de velocidad de los vectores de posición
Miré un montón de preguntas similares, y parece que no puedo encontrar una que responda particularmente a mi pregunta. Estoy programando un juego simple en 3D, y estoy tratando de permitir que el jugador recoja y mueva entidades alrededor de mi mapa. Básicamente, quiero obtener un vector de velocidad que "empuje" al objeto físico a una distancia de los ojos del jugador, dondequiera que miren. Aquí estáun ejemplo esto se hace en otro juego (el jugador tiene una entidad de silla frente a sus ojos).
Para hacer esto, descubro los ángulos de los ojos del jugador, luego obtengo el vector directo de los ángulos y luego calculo la velocidad del objeto. Aquí está mitrabajando código:
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);
}
Todo eso es genial, pero quiero convertir mi matemática para poder aplicar un impulso. En lugar de establecer una velocidad completamente nueva para el objeto, quiero "agregar" algo de velocidad a su velocidad existente. Entonces, suponiendo que tenga su velocidad actual, ¿qué tipo de matemáticas necesito para "agregar" velocidad? Esto es esencialmente una cuestión de física del juego. ¡Gracias!