- Home /
Is it possible to use a quaternion from a gameobjects position to another gameobjects position?
Hi.
I would really like to be able to change the rotation of a game object to match that of another. Right now i have the following code (Pretty much from the Unity documentation)
public Transform endMarker;
public float speed = 25f;
private float startTime;
private float journeyLength;
private bool resettingPosition = false;
public void resetPosition() {
startTime = Time.time;
journeyLength = Vector3.Distance(transform.position, endMarker.position);
resettingPosition = true;
}
void Update() {
if (resettingPosition == true) {
float distCovered = (Time.time - startTime) * speed;
float fracJourney = distCovered / journeyLength;
transform.position = Vector3.Lerp (transform.position, endMarker.position, fracJourney);
}
}
What this does is Lerping between the gameObject this script is attached to and a public Transform called endMarker, that I pulled another object into. This way my own object positions itself on the other object over time, copying it's exact positioning values.
I would like to be able to do the same with rotation, but after messing up with transforms, vectors 3s, quaternions for ages I'm on the verge of giving up and i figured maybe asking here would be an idea.
Thanks so much in advance!
Don't forget to accept the answer and close the thread if it solved your problem, thanks !
Answer by Fluffy_Kaeloky · Dec 15, 2016 at 11:35 PM
You'll need a startMarker if you want a start-end travel.
transform.rotation = Quaternion.Slerp(startMarker.rotation, endMarker.rotation, fracJourney);
Haven't tried it, but it should work.
You should also be using a starting position for your position, your lerp/slerp factor will define your position in your journey : 0 = start, 1 = end.
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fracJourney);
Then you slowly change fracJourney form 0 to 1, and back again if you want.
EDIT : Maybe I did not understand your question quite correctly, and that's not what you want, could you rephrase it if need be ?
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
MoveTowards rotation not always functioning 0 Answers
Lerp Rotation C# 3 Answers
Unit rotation fails consistently on all slerp rotations after the first? 0 Answers