- Home /
Unity crashes after specific coroutine.
I'm working on a project that involves a truck moving back and forth every now and then. The back and forth movements are managed in a couple of coroutines. Every time I play the game, right after the second coroutine (backwards movement) finishes, Unity crashes. I've tried making sure to stop all coroutines after each coroutine in case they're taking up too much CPU. Here is the coroutines involved (the backwards movement is the one that crashes):
IEnumerator MoveTruckForward(float time)
{
float elapsedTime = 0;
//-starting and ending positions for truck
Vector3 startingPos = new Vector3(0, 0, 0);
Vector3 endingPos = new Vector3 (4, 0, 0);
//-starting rotations for wheels
Vector3 back_angles = wheel_back.transform.rotation.eulerAngles;
Vector3 front_angles = wheel_front.transform.rotation.eulerAngles;
while (elapsedTime < 4)
{
//-rotates back wheel while truck is moving
back_angles.z = Mathf.Lerp(back_angles.z, -1440, (elapsedTime/time) / 30);
wheel_back.transform.eulerAngles = back_angles;
//-rotates front wheel while truck is moving
front_angles.z = Mathf.Lerp(front_angles.z, -1440, (elapsedTime/time) / 30);
wheel_front.transform.eulerAngles = front_angles;
//-moves truck to ending pos
truck.transform.position = Vector3.Lerp(startingPos, endingPos, (elapsedTime / time));
elapsedTime += Time.deltaTime;
yield return null;
}
}
IEnumerator MoveTruckBackward(float time)
{
float elapsedTime = 0;
//-starting and ending positions for truck
Vector3 startingPos = new Vector3 (4, 0, 0);
Vector3 endingPos = new Vector3 (0, 0, 0);
//-starting rotations for wheels
Vector3 back_angles = wheel_back.transform.rotation.eulerAngles;
Vector3 front_angles = wheel_front.transform.rotation.eulerAngles;
while (elapsedTime < 4)
{
//-rotates back wheel while truck is moving
back_angles.z = Mathf.Lerp(back_angles.z, 1440, (elapsedTime/time) / 40);
wheel_back.transform.eulerAngles = back_angles;
//-rotates front wheel while truck is moving
front_angles.z = Mathf.Lerp(front_angles.z, 1440, (elapsedTime/time) / 40);
wheel_front.transform.eulerAngles = front_angles;
//-moves truck to ending pos
truck.transform.position = Vector3.Lerp(startingPos, endingPos, (elapsedTime / time));
elapsedTime += Time.deltaTime;
yield return null;
}
}
Again, it only happens after the first instance of the truck moving back, regardless of how many coroutines have happened beforehand. Any help would be greatly appreciated.
What about the code that's calling these?
Just to be clear: when you say Unity "crashes", you mean it's exiting unexpectedly, yes? Do you see any sort of error message? Have you checked the editor log?
The code calls them in increments of 30 seconds in the FixedUpdate. It only calls it once.
Unity crashes, meaning it stops responding and I have to force close it. I will take a look at that editor log, thanks btw.
Answer by KingPepe · Aug 13, 2014 at 11:46 PM
Feel kinda dumb to say this, but I just had to update to Unity 4.5.3 which recently came out. I suppose this is something they addressed in the update because this completely fixed it. Thanks for your help, everyone.
Your answer
Follow this Question
Related Questions
c# Using an IEnumerator yield WaitForSeconds to temporarily pause a While loop 3 Answers
Crash using Sockets 2 Answers
Internal compiler error 1 Answer
Code freezes Unity and I don't know how to fix 1 Answer
Script Crashing 1 Answer