Всем добрый день. Возник такой вопрос. Вращаю объект по Slerp на 90 градусов. Нужно, чтобы по клику, объект плавно повернулся по оси Z (вид 2d, т.е. объект повернётся по кругу), на 90 градусов. При следующем нажатии он повернулся на следующие 90 градусов. Делал так:
Код
Quaternion a;
Quaternion b;
Quaternion rotate;
float speed;
bool test;
private void Start()
{
b = Quaternion.Euler(0f, 0f, 90f);
//rotate = GetComponent<Quaternion>();
speed = 4f;
test = false;
}
private void OnMouseDown()
{
test = true;
}
private void Update()
{
if (test)
{
transform.rotation = Quaternion.Slerp(transform.rotation, b, Time.deltaTime * speed);
}
Debug.Log(test);
Debug.Log(transform.rotation.z);
if(transform.rotation.z == 0.7f)
{
test = false;
Debug.Log(test);
b = Quaternion.Euler(0f, 0f, 180f);
}
}
Но здесь очень много проблем. Во-первых, не понятно, почему log даёт значение b и b.z как 0.7 (что это вообще), а не 90. Думал сравнивать, каждый раз, как закончит лерпиться, его вращение с нужным значением, чтобы давать булевую переменную false и прекращать лерп. А при клике опять начинать. Но не получается.