- Home /
Mathf function on GetKey
Alright now, I am simply trying to make an object go right and left and repeat this action, using Mathf.Sin or Mathf.PingPong, and i have one more little problem. When I run the code in update it works great, my object goes from start to end position and repeats. But the problem is, I want to make it start doing this if I press the F key, and if I let it, it should go to it's original position.
t = Mathf.PingPong(Time.time * 0.5f, 1f);
currentPos.x = Mathf.Lerp(startPos.x, endPos.x, t);
go.position = currentPos;
this is one way to move my object, the other one is :
currentPos.x = Mathf.Sin(Time.time * speed) * Mathf.PI;
go.position = currentPos;
and I use this to return the object to its original position when not holding the F key.
go.position = Vector3.Lerp(go.position, new Vector3(0, 0, 0), 5 * Time.deltaTime);
this function works, while I am holding the f key, it works okay. But then I lift my hand from F, it goes to it's original position, and then I press again, the object starts from a different position on the line and starts it's movement over there, not from the zero. Should I set a timer or something like that ?
Answer by NoseKills · Jan 04, 2015 at 04:34 AM
If the center point of the movement is really currentpos.x
at zero, you just have to make sure set up your variables every time F button goes down (`GetKeyDown`) so that your movement formulas result in 0.
With Mathf.sin it's pretty easy. Mathf.sin(0) == 0 so store Time.time when F is pressed and do
currentPos.x = Mathf.Sin((Time.time - fPressedTime)* speed) * Mathf.PI;
Your pingpong math is a bit funky to my eye so it's a bit tougher, but possibly
t = Mathf.PingPong(Time.time-fPressedTime + 1)* 0.5f, 1f);
Also note that these formulas don't consider which side the object was centered from the last time. If you want to track that, store that info to another variable and adjust my formulas depending on that with an if-else clause
Your answer
Follow this Question
Related Questions
Vector3.lerp and Mathf.pingpong not moving smoothly 3 Answers
mathf.pingpong 0 Answers
Make my mathf to Wait? :) 2 Answers
Trigonometry help? 1 Answer
using Mathf.PingPong 1 Answer