How to Get Quaternion Slerp to Return to Original Position?

Hey everybody,

I’m using:

transform.rotation=Quaternion.Slerp (start, target, Time.time * time);

which works great!

However, I’m struggling with trying to get the object to move back to it’s original position.

I thought that it would be as simple as switching start and target, but it appears not.

I’m trying:

transform.rotation=Quaternion.Slerp (target, start, Time.time * time);

but this does not work.

How do you get the object to move back to it’s original position with Quaternion.Slerp?

Any help and explanation is really appreciated.

Thanks in advance.

*Edit to add that the object teleports back to original position, there’s now Slerp.

If you want to rotate object by means of the SLerp function and to return it in home position, that, probably, the code will help you below(write on CSharp):

 private Quaternion startRot = Quaternion.Euler(0, 0, 0);
 private Quaternion targetRot = Quaternion.Euler(0, 0, 0);
 private float speedRot = 5.0f; //speed rotation

 void Start() {
  startRot = this.transform.rotation; //initialization start rotation
  targetRot = Quaternion.Euler(0, 50, 0); //initialization target rotation
 }

 void Update() {
  if(Input.GetKey(KeyCode.A)) { // if press and hold key A, then rotate to target
   transform.rotation=Quaternion.Slerp (transform.rotation, targetRot, speed*Time.deltaTime);
  }
  if(Input.GetKey(KeyCode.D)) { // if press and hold key D, then rotate to start
   transform.rotation=Quaternion.Slerp (transform.rotation, startRot, speed*Time.deltaTime);
  }
 }

And attatch this script to your object. I hope it to you will help.