Use visual interpolation and it will look smooth. Google what it is, the idea is also explained in that gafferon article.
EDIT: I see you are using Unity. In that case you are out of luck with my suggestion, I guess.
Sorry to reply this late and but I think this statement is wrong that Unity can't do interpolation talked in gafferon article.
I've only tried Unity so I'm no expert but I think you can do this in Unity if you are not using Unity's physics.
Just add script and make it's priority highest so that it's Update is called before any other script.
When it's Update is called create your own fixed update loop and accumulator using delta time.
Make this script call your own fixed update, let's say called FixedUpdate2 in all scripts you have registered to be called by this script (maybe create script base class that registers and unregisters script automatically), many times as needed.
Then use your own accumulator to do the interpolation in LateUpdate.
Problem solved.
Have you checked out how reliable and practical that is.
I did my own fixed update loop with interpolation like this when I was trying out Unity, it worked fine.
Just add delta time to your accumulator and call your custom fixed update in your registered scripts as many times there is more or equal time left than your fixed timestep.
You need to expose your accumulator or already calculated interpolation factor for your registered scripts to do interpolation.
Also Time.deltaTime will have Update's delta time and not your fixed timestep delta time so you need to take that into a account.
And make sure your custom fixed update caller script's priority is highest so it's Update is called first, so that your custom fixed update is called before any other script's Update is called.
Minus is that this won't work with internal physics because physics are updated after every FixedUpdate and your custom accumulator won't be in sync with Unity's own fixed update accumulator.
If you don't use internal physics you can do your own fixed update with interpolation this way.
Just create two scripts something like this
InterpolatedFixedUpdateCaller.cs
- Set priority to highest
- Exposes list of InterpolatedFixedUpdateBase classes for registeration or Register and Unregister methods.
- Exposes interpolation factor to lerp stuff like movement and rotation.
- Calls your custom fixed update in all InterpolatedFixedUpdateBase classes.
InterpolatedFixedUpdateBase.cs
- Base class for scripts you want have custom fixed update for.
- Also use this class to auto register script for calling by InterpolatedFixedUpdateCaller class.
- Can't remember which Unity events I used to do the registeration and unregisteration, I think they where "OnEnable" to register and "OnDisable" to unregister.