Based on what I have tested, though in real physics, drag is calculated as
dragForceMagnitude = velocity.magnitude ^ 2 * drag;
in Unity a linear approximation is used. Where on each FixedUpdate
velocity = velocity * ( 1 - deltaTime * drag);
This is based on the following forum posts: http://forum.unity3d.com/threads/drag-factor-what-is-it.85504/ and http://forum.unity3d.com/threads/physics-drag-formula.252406/
So the change on velocity at each FixedUpdate is
vNEW = (v+a*dt)*(1-drag*dt)
f = m*a
The result of this is that, given some constant force, an object with drag will reach a certain max velocity (vNEW=v). The calculation of the formula of such velocity (vSaturation) is included below.
we will assign v=vSAT and vNEW=vSAT and get:
vSAT = (vSAT+a*dt)*(1-drag*dt)
vSAT*drag*dt = a*dt - a*drag*dt^2
vSAT*drag = a - a*drag*dt
vSAT = a/drag - a*dt = f/m/drag - a*dt
so if force is 100, mass is 1, drag is 1 and dt=1/50 we get
vSAT = 100/1 - 100/50 = 98
Might I ask why you have the equation > velocity = velocity * ( 1 - deltaTime * drag); When in this link (you linked to) its called acceleration? https://forum.unity3d.com/threads/physics-drag-formula.252406/ Don't get me wrong, I think you're correct because in Nickdas' physics script he applies acceleration to the position of the object which sounds incorrect to me. I think so because in any other equation I've found to find velocity it is > v(t) = v + a*dt The last thing I wanted to ask is probably pretty simple but I am unsure. Is 'a' dependent on 't' or is 'v'?
– Shriek