Mathf.Lerp Time problems.
void Update () {
EmSourse.GetComponent<Renderer> ().material.color = LightColour;
EmSourse.GetComponent<Renderer> ().material.SetColor("_EmissionColor", LightColour * EmStregh);
// mylight.GetComponent<Light> ().light.color = new Color (LightColour);
Ray ray = camera.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit)) {
if (Input.GetMouseButtonDown (0) && hit.collider.tag == "swich") {
klick = !klick;
}
}
if (klick == true) {
t += SwichSpeed * Time.deltaTime;
mylight.intensity = Mathf.Lerp (0.0f, 2.0f, t);
EmStregh = Mathf.Lerp (0.0f, 30.0f, t);
Quaternion targetRotation = Quaternion.Euler (25, 0, 0);
mySwich.transform.localRotation = Quaternion.Slerp (transform.localRotation, targetRotation, t);
}
else {
t += SwichSpeed * Time.deltaTime;
mylight.intensity = Mathf.Lerp (2.0f, 0.0f, t);
EmStregh = Mathf.Lerp (30.0f, 0.0f, t);
Quaternion targetRotation = Quaternion.Euler (-25, 0, 0);
mySwich.transform.localRotation = Quaternion.Slerp (transform.localRotation, targetRotation, t);
}
}
Hi I have here a swich with a lamp ist all working fine but with no smoose transition. I get that i need to do something with "t" varible but I dont know specifically what to do here.Can you help me? Thank You!
Answer by NoseKills · Oct 05, 2016 at 03:26 PM
You are not resetting t
anywhere and you add to it in both the if and else blocks. After the update has run a little while and t
grows over 1, every transition will be instant.
mylight.intensity = Mathf.Lerp (0.0f, 2.0f, t);
...
mylight.intensity = Mathf.Lerp (2.0f, 0.0f, t);
You need to reset t
to 0 at the same time as you change the value of klick
so that every transition starts from 0.
Your answer
Follow this Question
Related Questions
Mathf.Lerp not working 0 Answers
Attaching sound to ImageTarget issues 0 Answers
How to add force in random directions? 0 Answers
Collision Detection Not Working (Unity 5.2.3) 5 Answers
Interchangeable animations in a script? 0 Answers