I want to develop a top-down car game that uses the same movement system from a HotWheels promotional one by another developer. I've a car moving based in direction variants (up, up-left, up-right, left, right, down, down-left, down-right) by applying forces in its two-dimensional rigid body.
The car rotates automatically to the directional key you press (a rotation tween).
I've not been able to implement drifting as in this HotWheels promotional. Some pictures of it:
Picture 1: pointing towards south means the car is in 0 degrees of rotation; pointing towards north means 180 degrees.
Picture 2: when you're pointing towards east and keep accelerating towards west, you'll notice the car drifts to east.
In other words, the car drifts by following a circunference based on the current angle until the angle of the target direction.
This is currently how the car moves forward for every frame:
$force = \text{acceleration force}$
I need to change it to:
$force = \text{acceleration force} \times \text{drift force}$
Drift force takes the current rotation in degrees and the target direction (up, up-left, up-right, left, right, down, down-left, down-right).
I bet it'll require me to use sine and cosine functions, but I'll also need intersecting directions (up-left, up-right, down-left, down-right) to have the same speed as the other directions.


This is a solution, but I still need to find a way to increase the drift radius. I found the circunference is kinda low for me.
In the question I had defined acceleration force as the target direction's vector multiplied per an acceleration constant.
I've replaced the acceleration force based on the current rotation.
$force = \text{if not accelerating, $(0, 0)$; otherwise, $(-\sin(\text{current rotation}), \cos(\text{current rotation}))$}$
How can I increase the circunference radius?