Read when player has done a 90 degree turn at all times.
Hello there!
I have a basic setup, a controller that rotates with the mousekeys or thumbsticks on gamepad.
I wanna read if the player has done a turn that is over 90 degrees fast, not slowly.
Are there any good ways to do this?
I tried to code something already, but it only works sometimes, and it really don't work if i go oblique directions:
//Checks where the player is turned over 90 degrees.
if(((transform.localRotation.eulerAngles.y >= 0) && (transform.localRotation.eulerAngles.y <= 80)) || ((transform.localRotation.eulerAngles.y >= 342) && (transform.localRotation.eulerAngles.y <= 360)))
{
if (HundreandEightyDegrees)
{
Debug.Log("Quick turned to 0 degrees from 180!");
ZeroDegrees = true;
NinityDegrees = false;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = false;
}
else
{
ZeroDegrees = true;
NinityDegrees = false;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = false;
}
}
if ((transform.localRotation.eulerAngles.y >= 81) && (transform.localRotation.eulerAngles.y <= 175))
{
if (TwohundreandseventyDegrees)
{
Debug.Log("Quick turned to 90 degrees from 270!");
ZeroDegrees = false;
NinityDegrees = true;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = false;
}
else
{
ZeroDegrees = false;
NinityDegrees = true;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = false;
}
}
if ((transform.localRotation.eulerAngles.y >= 177) && (transform.localRotation.eulerAngles.y <= 265))
{
if (ZeroDegrees)
{
Debug.Log("Quick turned to 180 degrees from 0!");
ZeroDegrees = false;
NinityDegrees = false;
HundreandEightyDegrees = true;
TwohundreandseventyDegrees = false;
}
else
{
ZeroDegrees = false;
NinityDegrees = false;
HundreandEightyDegrees = true;
TwohundreandseventyDegrees = false;
}
}
if ((transform.localRotation.eulerAngles.y >= 270) && (transform.localRotation.eulerAngles.y <= 335))
{
if (NinityDegrees)
{
Debug.Log("Quick turned to 270 degrees from 90!");
ZeroDegrees = false;
NinityDegrees = false;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = true;
}
else
{
ZeroDegrees = false;
NinityDegrees = false;
HundreandEightyDegrees = false;
TwohundreandseventyDegrees = true;
}
}
I also tried to store euler angle and then add 90 degrees to it, and then after 0.1 sec if the transform rotation right now was more and equal to the stored one it had done a 90 degree turn. But this had a lot of problem, because when you should store and read if it has changed..
Your answer
Follow this Question
Related Questions
TopDown Look at mouse 0 Answers
player Gravity haw to Roted? 1 Answer
Some problems with handmade basic player controller 0 Answers