Как заставить объект повернуться по оси Y четыре раза относительно какого изначального положения ( -180 до +180).
Думал это просто - добавлять по 90 градусов к изначальному углу и проверять текущий угол. Как только текущий угол станет больше - далее по коду.
Текущий угол < изначальный угол +90
Оказалось, если изначальный угол 91, то 91+90=181, а такого текущего угла не может быть и условие получается вечное.
Есть ли какой-то способ в unity?
Поворачивать с определенной скоростью, но отслеживать время поворота не хочу.
Синтаксис:
Используется csharp
private void Search()
{
myAgent.SetDestination(playerPos);
if (transform.position.x - playerPos.x == 0f)
{
if (transform.position.z - playerPos.z == 0f)
{
angleSet = transform.eulerAngles.y;
IsSearch = false;
IsScan = true;
}
}
}
private void Scan()
{
angle = transform.eulerAngles.y;
Debug.Log(angle);
Debug.Log(angleSet);
if (timeout1 < waitTime)
{
timeout1 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 90)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout2 < waitTime)
{
timeout2 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 180)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout3 < waitTime)
{
timeout3 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 270)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout4 < waitTime)
{
timeout4 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout5 < waitTime)
{
timeout5 += Time.fixedDeltaTime;
}
else
{
IsWayPoints = true;
IsScan = false;
}
{
myAgent.SetDestination(playerPos);
if (transform.position.x - playerPos.x == 0f)
{
if (transform.position.z - playerPos.z == 0f)
{
angleSet = transform.eulerAngles.y;
IsSearch = false;
IsScan = true;
}
}
}
private void Scan()
{
angle = transform.eulerAngles.y;
Debug.Log(angle);
Debug.Log(angleSet);
if (timeout1 < waitTime)
{
timeout1 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 90)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout2 < waitTime)
{
timeout2 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 180)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout3 < waitTime)
{
timeout3 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet + 270)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout4 < waitTime)
{
timeout4 += Time.fixedDeltaTime;
}
else
{
if (angle < angleSet)
{
transform.Rotate(0, 1f, 0);
}
else
{
if (timeout5 < waitTime)
{
timeout5 += Time.fixedDeltaTime;
}
else
{
IsWayPoints = true;
IsScan = false;
}