Я работаю над проектом Unity, и мне нужно сосчитать время, которое пользователь затрачивает на следующий шаг.
Каждый объект в игре перемещается с помощью мыши и перетаскивания его, поэтому всякий раз, когда пользователь прекращает перетаскивать основной объект, должен запускаться таймер, а когда пользователь снова перетаскивает объект, он должен останавливаться.
Это мой скрипт для перетаскивания и таймера:
private float startPosX;
private float startPosY;
public bool isHeld;
//private float distance = 10;
private float stopTime;
private void OnMouseDrag()
{
Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
Vector2 objectPos = Camera.main.ScreenToWorldPoint(mousePos);
transform.position = objectPos;
}
void Update()
{
if (isHeld) {
OnMouseDrag();
}
if (Input.GetMouseButtonUp(0))
{
isHeld = false;
Debug.Log(isHeld);
stopTime += Time.deltaTime;
string minutes = Mathf.Floor((stopTime % 3600) / 60).ToString("00");
string seconds = (stopTime % 60).ToString("00");
Debug.Log(minutes + ":" + seconds);
}
}
private void OnMouseOver()
{
if (Input.GetMouseButtonDown(0)) {
isHeld = true;
Debug.Log(isHeld);
}
}
}
My onMouseDrag () - это фактическая функция, используемая для перетаскивания объекта, и onMouseOver обнаруживает, находится ли мышь над объектом.
Таймер задается deltaTime, а затем я использую строковые минуты и секунды, чтобы лучше отобразить его и посмотреть, работает ли он правильно, но это не так. Я не знаю, почему это не работает, и мне нужна помощь, потому что я новичок в единстве и кодировании.