How to use quaternion.lerp

I came across this:

var from : Transform;
var to : Transform;
var speed = 0.1;
function Update () {
	transform.rotation =
	  Quaternion.Lerp (from.rotation, to.rotation, Time.time * speed);
}

But I’m to stupid to figure it out. I’m trying to smoothly rotate an object a certain amount, but do I replace where it says Transform with an angle like 10,0,0?

If you are doing a relative movement, Use [Transform.Rotate()][1] instead. There are lots of ways of setting up a movement over time using a Quaternion. If you explain in detail how you plan to use this code, someone on this list can modify your code to make it work for that specific use. [1]: http://docs.unity3d.com/Documentation/ScriptReference/Transform.Rotate.html

Why don't you check out the Unity Script Reference, and search for [Quaternion.Lerp][1]. [1]:http://docs.unity3d.com/Documentation/ScriptReference/Quaternion.Lerp.html

2 Answers

2

from.rotation is the angle from where you want to start rotating the object, to.rotation the angle where the rotation stops, and the last elemente is the delta T of the rotation. I’m not sure but I think quatertion arguments must be in radians, not degress.

Quaternion arguments are in degrees.

Nice, had that thing bugging me but never rembered to check it out

You can use Quaternion.Euler() to construct a rotation for use in this code:

var from : Vector3;
var to : Vector3;
var speed = 0.1;
private var qFrom : Quaternion;
private var qTo : Quaternion;

function Start() {
   qFrom = Quaternion.Euler(from);
   qTo   = Quaternion.euler(to);
}

function Update () {
    transform.rotation =
      Quaternion.Lerp (qFrom, qTo, Time.time * speed);
}

Note this code is only going to work when the game is first run. The last parameter of the Lerp() is a value between 0 and 1, and that will only be true when the game first starts.