Okay, I *think* I've found the problem - only, unfortunately, it lies in the part of code that completely threw me during the WDL tutorials. It's this bit:
code:
temp = max((1-time*friction),0);
my._SPEED_X = (time * my._force_x) + (temp * my._SPEED_X); // vx = ax*dt + max(1-f*dt,0) * vx
my._SPEED_Y = (time * my._force_y) + (temp * my._SPEED_Y); // vy = ay*dt + max(1-f*dt,0) * vy
my._SPEED_Z = (time * absforce.z) + (temp * my._SPEED_Z); // calculate relative distances to move
dist.x = my._SPEED_X * time; // dx = vx * dt
dist.y = my._SPEED_Y * time; // dy = vy * dt
dist.z = 0; // dz = 0 (only gravity and jumping)
ie the bit that gives you a constant speed on all machines. I don't seem to be having the problem if I use a less accurate way of calculating dist... Anybody good at physics who might know why this is?
Thanks,
Keith