пытаюсь поворачивать обьект на правую кнопку. написал 2 функции: Tap (поворот на +90' по y от существующего поворота) и Untap(такой же поворот в обратку, то есть -90' по y). Должно получиться так: кликаешь по объекту - он поворочивается, кликаешь ещё раз уже по повёрнутому - и он разворачивается обратно, как был. Начальное положение поворота у объекта всегда разное и я ввёл булевую переменную TapFactor, которая должна проверять производился ли уже поворот для объекта.
Изначально его значение - false.
Вот код:
Синтаксис:
Используется csharp
void OnMouseOver()
{
if(Input.GetMouseButtonDown(1)){
if(TapFactor == false){ Tap ();}
if(TapFactor == true){ Untap ();}
}
}
void Tap(){
Debug.Log("TAP");
Quaternion tap = Quaternion.Euler(0,transform.rotation.y - 90f,0);
transform.rotation = Quaternion.Slerp(transform.rotation,tap,Time.time * TapTime);
TapFactor = true;
}
void Untap(){
Debug.Log ("UNTAP");
Quaternion untap = Quaternion.Euler(0,transform.rotation.y + 90f,0);
transform.rotation = Quaternion.Slerp(transform.rotation,untap,Time.time * TapTime);
TapFactor = false;
}
{
if(Input.GetMouseButtonDown(1)){
if(TapFactor == false){ Tap ();}
if(TapFactor == true){ Untap ();}
}
}
void Tap(){
Debug.Log("TAP");
Quaternion tap = Quaternion.Euler(0,transform.rotation.y - 90f,0);
transform.rotation = Quaternion.Slerp(transform.rotation,tap,Time.time * TapTime);
TapFactor = true;
}
void Untap(){
Debug.Log ("UNTAP");
Quaternion untap = Quaternion.Euler(0,transform.rotation.y + 90f,0);
transform.rotation = Quaternion.Slerp(transform.rotation,untap,Time.time * TapTime);
TapFactor = false;
}
А вот проблема:
Всё происходит очень быстро, когда я кликаю правой кнопкой - работает функция OnMouseOver, которая тут же запускает функцию Tap (т.к. значение TapFactor - false), в которой TapFactor мгновенно меняется на true, а посему функция OnMouseDown уже запускает ф-ю Untap. Такие дела.
Я подумал, что может задержка строки TapFactor = true/false; поможет исправить положение, если она будет выполнятся после поворота, но yield силён только в корутинах, в которых не силён я.
Как можно отсрочить выполнение конкретной строки в функции? Спасибо