Пятница, 08 Ноября 2024, 22:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Функция со сбросом
BassPiraT92Дата: Суббота, 31 Марта 2018, 16:44 | Сообщение # 1
участник
Сейчас нет на сайте
В общем не знаю как реализовать:
Зажимаю кнопку -> из 10(int) каждую секунду вычитается 1 (в случаи отжатия кнопки функция вставала в исходное значение)

Это как в добыче ресурсов в rust что то схожее.
zmearДата: Суббота, 31 Марта 2018, 20:34 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Создайте событие уничтожения объекта при обнулении этой переменной, либо переменную логическую check, которая обратится в ложь при дохождении до нуля int,
либо запрограммируйте событие отжатия мыши или потере фокуса на вызов функции, которая проверяет переменную check и если та истинна, устанавливает значение обратно на 10.



drcrackДата: Воскресенье, 01 Апреля 2018, 05:37 | Сообщение # 3
старожил
Сейчас нет на сайте
Так как ты написал делать нельзя, будет накапливаться ошибка которая будет приводить к тому, что все касты реально будут дольше 10с (и чем ниже фпс, тем больше разница)

Надо как-то так:

Код
void Update() {

  if (Input.GetKeyDown(KeyCode.E)) {
    StartCoroutine(Cast(10f));
  }

}

IEnumerator Cast(float time) {

  var startTime = Time.time;
  var endTime = startTime + time;

  while (Time.time < endTime) {

    if (!Input.GetKey(KeyCode.E)) {
      Debug.Log("Игрок отпустил кнопку раньше времени");
      yield break;
    }

    Debug.Log(string.Format("Progress: {0}", (Time.time - startTime) / time));

    yield return null;
  }

  Debug.Log("Игрок продержал кнопку нужное время");

}


Сообщение отредактировал drcrack - Воскресенье, 01 Апреля 2018, 05:38
BassPiraT92Дата: Воскресенье, 01 Апреля 2018, 08:42 | Сообщение # 4
участник
Сейчас нет на сайте
drcrack, да Вы просто гений!!!! От души)поизучаю получше работу с коррутинами а то вообще в этой области нуль
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг