pinball flipper bug
hey. i want to create a simple pinball flipper arm which rotates 45° forward when i hold down space and snaps back zu 0° when i release space. i thought it would work like that:
using UnityEngine;
using System.Collections;
public class RotateDegrees : MonoBehaviour {
[SerializeField] protected Vector3 m_from = new Vector3(0.0F, 45.0F, 0.0F);
[SerializeField] protected Vector3 m_to = new Vector3(0.0F, -45.0F, 0.0F);
[SerializeField] protected Vector3 m_neutral = new Vector3(0.0F, 0.0F, 0.0F);
[SerializeField] protected float m_frequency = 5.0F;
void Update() {
if (Input.GetKeyDown("space")){
Quaternion from = Quaternion.Euler(this.m_neutral);
Quaternion to = Quaternion.Euler(this.m_to);
float lerp = 0.5F * (1.0F + Mathf.Sin(Mathf.PI * Time.realtimeSinceStartup * this.m_frequency));
this.transform.localRotation = Quaternion.Lerp(from, to, lerp);
}
else if (Input.GetKeyUp("space")){
Quaternion fromsn = Quaternion.Euler(this.m_to);
Quaternion tosn = Quaternion.Euler(this.m_neutral);
float lerp = 0.5F * (1.0F + Mathf.Sin(Mathf.PI * Time.realtimeSinceStartup * this.m_frequency));
this.transform.localRotation = Quaternion.Lerp(fromsn, tosn, lerp);
//Quaternion from = Quaternion.Euler(this.transform.rotation.eulerAngles);
}
}
}
but that turns out to look like this: https://gfycat.com/ExcellentSourGiraffe
the gif got capured with 30FPS. but its so not working
Answer by Morgenstern_1 · Jun 08, 2016 at 04:18 PM
You're calculating your lerp value incorrectly. Lerp should be between 0 and 1, where 0 will set the local rotation to the "from" value and 1 will set it to the "to" value.
Try saving the time at which the space key has held down, and work out the lerp value using that (and the length of time you want your anim to take).
Your answer
Follow this Question
Related Questions
i need to smooth my gun ,my gun prefabe is children. 1 Answer
Error : "!CompareApproximately (aScalar, 0.0F)" with Quaternion.Lerp 5 Answers
Rotation (Quaternion.Lerp) not working 0 Answers
Problem rotating and object with Quaternion.Lerp 2 Answers
Rotating to match surface normal (curved surface). 0 Answers