Juego de carreras de arriba abajo Box2d: matando a las fuerzas "residuales"

Estoy haciendo un juego de carreras de arriba hacia abajo en GM: S con Box2D, el coche se controla de forma inusual: el jugador establece la dirección y la velocidad del motor, y el coche las usa: gira en la dirección deseada y alcanza velocidad. Pero la pregunta es sobre la velocidad "residual" después del turno. Esto es lo que quiero decir: enter image description here

Hago rotation aplicando torque y moviéndome aplicando fuerza. No tengo neumáticos, es solo un object simple.
Entonces, ¿cómo puedo deshacerme de este impulso? Estoy trabajando en GM: S, pero me gustaría escuchar cualquier solución, puedo adaptarla fácilmente.

Código de movimiento:

var ad = angle_difference(phy_rotation, desinetworkingDir); physics_apply_torque((angleTorque) * -sign(ad)); // rotate the car dx = lengthdir_x(spd, -phy_rotation); dy = lengthdir_y(spd, -phy_rotation); physics_apply_force(phy_position_x, phy_position_y, dx, dy); // move the car 

Combinación de fuerzas

En lugar de usar una fuerza de par para dirigir el automobile, aplique una fuerza perpendicular a la dirección en que viaja. Esto es más o less cómo la física realmente funciona.

Cuando aplique la fuerza perpendicular a la dirección hacia adelante, la fuerza hacia delante y la fuerza perpendicular se combinarán sobre cada actualización física para cambiar la dirección del automobile. De esta manera, la fuerza hacia adelante es "negada" al ser agregada a la fuerza perpendicular, creando una nueva dirección para el automobile.

Las fuerzas de par y las fuerzas lineales no se combinan de esta manera. Por lo tanto, utilizar el par para girar no afecta en absoluto la fuerza hacia delante.

También es posible que deba aplicar manualmente una rotation al automobile para mantenerlo apuntando en la misma dirección en que se mueve.

Notas de GML

No he trabajado mucho con la física en Game Maker, sin embargo, me gustaría ver las funciones físicas locales.

https://docs.yoyogames.com/source/dadiospice/002_reference/physics/forces/physics_apply_local_force.html

Con esto, probablemente sería más fácil configurar tres "fuerzas" y aplicarlas según sea necesario para acelerar, girar a la izquierda y a la derecha.

Adelante (asumiendo de su image que 0,1 es hacia adelante):
physics_apply_local_force(0, 0, 1, 0)

Giro a la izquierda:
physics_apply_local_force(0, 0, 0, 1)

Vuelta a la derecha:
physics_apply_local_force(0, 0, 0, -1)

Debería cambiar el "1" o "-1" por la magnitud de la fuerza.

Ejemplo de Game Maker para manejar la rotation:
https://docs.yoyogames.com/source/dadiospice/002_reference/physics/physics%20variables/phy_rotation.html