How to slowly rotate an object only once using scripting?
I have doors in the house environment that i am making but not all of them are on the same orientation! I already made the correct animation to some doors ... but if i assign the same animation to the others it is a mess since they have not the same origin point on the Y axis and for file weight (WebGL) i don't want to have 20 different animations! xO Can somebody help me making a script for modifying the object rotation? so the door physically rotates to a certain degree? =) Thanks for any help!! ^^
Answer by 5c4r3cr0w · May 05, 2016 at 05:15 AM
Here is something you can get to work for rotation.
using UnityEngine;
using System.Collections;
public class MyRotation : MonoBehaviour
{
public float Yrot;
Vector3 eulers;
void Start(){
eulers = transform.rotation.eulerAngles;
StartCoroutine(rotateStuff(eulers));
}
IEnumerator rotateStuff(Vector3 eulers){
float t = 0;
float targetRot = 0;
while(targetRot < Yrot){
t += Time.deltaTime;
targetRot = Mathf.Lerp(targetRot,Yrot,t*0.5f);
transform.rotation = Quaternion.Euler(eulers.x,targetRot,eulers.z);
yield return null;
}
}
}
You need to assign this script to all object you want to rotate and add the value to slot "YRot" to desired rotation. (Assuming default rotation axis is Y).
If you want to know further here is scripting ref : http://docs.unity3d.com/ScriptReference/Transform-rotation.html
Good luck
Your answer
Follow this Question
Related Questions
Rotate Player 90 degrees about its Y axis relative to the mouse being dragged between two angles 1 Answer
Set public gameobject by raycast hit target 1 Answer
my script was written but does not want to work 1 Answer
Scripting Sprites || URGENT HELP 0 Answers
Set Bool to false after seconds? 2 Answers