Unity Crashes When Clicking Play: Script Error?
I have an issue, whenever I try to click play in the Unity Editor, the Editor freezes. This might be caused by a script error. According to this post http://answers.unity3d.com/questions/756762/unity-bug-not-responding-when-i-try-to-play.html
My Do/While script has a loop. Is there a way to fix it? I am running Windows 10 x64 with Unity 5.3.5 (latest) version.
Here is the code that may have been causing the problem:
using UnityEngine;
public static class Helper
{
public static float ClampAngle(float angle, float min, float max)
{
do
{
if (angle < -360)
angle += 360;
if (angle > -360)
angle -= 360;
} while (angle < -360 || angle > 360);
return Mathf.Clamp (angle, min, max);
}
}
Additionally, the tutorials that I have been following can be found here https://www.3dbuzz.com/training/view/3rd-person-character-system/simple-character-system/18-tpcamera-handleplayerinput-implementation
The part where they scripted this can be found at 9:30 to 15:30 of the video.
Answer by Dave-Carlile · Jun 03, 2016 at 12:24 PM
This part is your problem:
if (angle > -360)
angle -= 360;
I believe you want that to be if (angle > 360)
.
Currently your loop is just toggling the value back and forth between < -360 and > -360.
You can also eliminate the loop by using modulo arithmetic:
angle %= 360;
if (angle < 0) angle += 360;
That will always give you an angle between 0 and 360. I've not tested it fully so use at your own risk, but some flavor of that should work.