# How to calculate acceleration and velocity of constrained objects

I’m stuck on trying to build a manual accelerometer/speedometer script for objects that are using ParentConstraint component to move around (no RigidBody)

I’m running into issues with the acceleration part, with the numbers jumping around wildly, I suspect it is something related to Update vs Fixed Update, and/or Time.deltaTime vs fixedDeltaTime. Or maybe I just need to average over more frames? Or maybe my math is messed up…

Here’s sorta what I have so far, any help would be amazing.

``````        void Update()
{
/////////////  VELOCITY  ////////////
Velocity = (currentPosition - prevPosition) / Time.fixedUnscaledDeltaTime;
CurrentSpeedAvg = ( Mathf.Abs(Velocity.x ) + Mathf.Abs(Velocity.z) ) / 2 ;
//This part seems to work fine, I'm getting the average velocity of x and z axis.

/////////////  ACCELERATION ////////////////
CurrentAcceleration = (Velocity - prevVelocity) / Time.fixedUnscaledDeltaTime;
CurrentAccelerationCoef = ((Mathf.Abs(CurrentAccelerationLocal.x) + Mathf.Abs(CurrentAccelerationLocal.z)) / 2); // this jumps around wildly

CurrentAccelerationSmoothed = Mathf.Lerp(CurrentAccelerationCoef, pastAccelerationCoef, .5f);  //Here I was just attempting to smooth it out but it's still unusable

////////////////  STORED FOR NEXT FRAME   //////////////
prevPosition = currentPosition;
prevVelocity = Velocity;
pastAccelerationCoef = CurrentAccelerationCoef;
}
``````

So I was able to get some usable data by doing pretty heavy filtering using an animation curve and mathF.smoothDamp (smoothDamp seems much better for this than Lerp)

But I still think the initial calculation isn’t being done right because there’s so much noise in the calculation. If anyone has a better solution please share.