- Home /
Mathf.PingPong and triggering events
I'm trying to find how long in "game time" it takes for an object to go from A to B and vice-versa.
I have this running on update as a clock:
worldTime += Time.deltaTime;
For the object to move I'm using Mathf.PingPong
testCube.position.x = Mathf.PingPong(Time.time, 5);
And I was hoping something like this would work:
if (
Mathf.Approximately(testCube.position.x, 0.0) ||
Mathf.Approximately(testCube.position.x, 5.0)
){
timeDifference = scriptWorld.worldTime - currentTime;
currentTime = scriptWorld.worldTime;
print("Pos :" + testCube.position.x.ToString("f2") + "- Time Dif: " + timeDifference.ToString("f2"));
timeDifference = 0;
}
But I don't get any results. How can I get the time it takes between A and B printed precisely?
Answer by NoseKills · Jun 17, 2014 at 09:45 PM
In your example time equals distance so you know both values at all times. So if your pingpong time between 0 and 5, it takes exactly 5 seconds for the object to go from 0 to 5 and from 5 to 0 every time.
When you are using Time.time as the variable to change position.x, you have a very small chance of hitting exactly 0 or 5 seconds (equaling 0 or 5 as position.x). You might get an Update() call at 4.99 seconds (position.x at 4.99 units) going towards "5", and if the next Update() takes 0.05 seconds, the next time you draw the object, Time.time will be at 5.04 (Mathf.pingpong will make position.x 4.96 going back towards 0)
Your answer
Follow this Question
Related Questions
Trigger not playing animation 1 Answer
How to Specify a Collider in OnTriggerStay function? 1 Answer
2D - Two objects, each having two trigger colliders - interacting 0 Answers
Enemy not going up during attack animation 1 Answer
Help with OnTriggerEnter. Code inside trigger is never going off. 1 Answer