Time.deltaTime проблемка
|
|
alec5sei | Дата: Среда, 21 Февраля 2018, 16:48 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Привет! Возникла проблема. Вот код:
Код UnprisonUI.SetActive (true); UnprisonFlo = UnprisonFlo + 300f; Unprison.text = "Время: " + UnprisonFlo; UnprisonFlo -= Time.deltaTime / 300f;
Суть: переменная float UnprisonFlo стоит 300. И нужно что бы эти 300 медленно отнимались до полного 0. Но когда срабатывает код, он отнимает где то примерно 0.0020 и останавливается. В чем может быть проблема?
|
|
| |
drcrack | Дата: Среда, 21 Февраля 2018, 17:46 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| В каком методе вообще это все происходит? Покажи код целиком
|
|
| |
defGMDefeloper | Дата: Среда, 21 Февраля 2018, 18:39 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Где у тебя проверка что когда достигнет нуля должно остановиться? Думаю дело в ней,т.к этот код не даст описанный вами результат
Сообщение отредактировал defGMDefeloper - Среда, 21 Февраля 2018, 18:39 |
|
| |
alec5sei | Дата: Воскресенье, 25 Февраля 2018, 16:35 | Сообщение # 4 |
участник
Сейчас нет на сайте
| drcrack, Вот
Код void Update () { Ticket.text = "ШТРАФ: " + TicketFlo; if (TicketFlo <= 0f) { TicketFlo = 0f; }
Wanted.fillAmount = WantedFlo; WantedFlo -= Time.deltaTime / 500f; if (WantedFlo >= 1f) { WantedFlo = 1f; } if (WantedFlo < 0) { WantedFlo = 0f; } if (TicketFlo >= 1 & WantedFlo <=0) { Alex.transform.position = PrisonSpawn.transform.position; UnprisonUI.SetActive (true); UnprisonFlo = UnprisonFlo + 300f; Unprison.text = "Время: " + UnprisonFlo; UnprisonFlo -= Time.deltaTime / 300f; TicketFlo = 0f; if (UnprisonFlo == 0) { Alex.transform.position = UnprisonSpawn.transform.position; } } }
|
|
| |
drcrack | Дата: Воскресенье, 25 Февраля 2018, 17:53 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| У тебя условие if (TicketFlo >= 1 и далее внизу TicketFlo = 0f;
|
|
| |
defGMDefeloper | Дата: Воскресенье, 25 Февраля 2018, 18:04 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Используй линейную интерполяцию . Mathf.Lerp добавь переменную time (коефициент интерполяции) и меняй её от 1 до 0; после изменения пиши Mathf.Clamp01(time); Я всегда так делаю.Ибо оператор == работает не точно,сам проверял. Скажем я делал проверку на число и оно останавливалось на тысячных,что мне не подходит,ибо мне нужно точно. Старайся избегать if в принципе.делай код более линейным.
Сообщение отредактировал defGMDefeloper - Воскресенье, 25 Февраля 2018, 18:06 |
|
| |
alec5sei | Дата: Воскресенье, 25 Февраля 2018, 18:28 | Сообщение # 7 |
участник
Сейчас нет на сайте
| drcrack, Таймер заработал.. Но почему то не отнимает до 0 а прибавляет. А если я это Код UnprisonFlo = UnprisonFlo + 300f; напишу так то он так же не сработает. И персонаж почему то с места не может сдвинуться)Добавлено (25 Февраля 2018, 18:28) --------------------------------------------- defGMDefeloper, Я новенький в программировании и немного не понял как это сделать
|
|
| |
drcrack | Дата: Воскресенье, 25 Февраля 2018, 20:07 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Цитата Но почему то не отнимает до 0 а прибавляет. Потому что ты прибавляешь +300f каждый кадр прежде чем вычесть
Код UnprisonFlo = UnprisonFlo + 300f; Unprison.text = "Время: " + UnprisonFlo; UnprisonFlo -= Time.deltaTime / 300f;
|
|
| |
alec5sei | Дата: Понедельник, 12 Марта 2018, 15:34 | Сообщение # 9 |
участник
Сейчас нет на сайте
| drcrack, Что то я вообще запутался. Ничего не понял А если я в переменной Код public float UnprisonFlo = 0f; поставлю сразу 300, то он все равно не работает.
Добавлено (12 Марта 2018, 15:34) --------------------------------------------- Все, сделал. А сделал так - Добавил булевую переменную и включал ее в тот момент когда нужно. Вот так короче:
Код if (TicketFlo >= 1 & WantedFlo <= 0) { Alex.transform.position = PrisonSpawn.transform.position; TicketFlo = 0f; Prison = true; } if (Prison == true) { UnprisonFlo -= Time.deltaTime / 300f; UnprisonText.SetActive (true); if (UnprisonFlo <= 0) { Alex.transform.position = UnprisonSpawn.transform.position; UnprisonText.SetActive (false); Prison = false; UnprisonFlo = 100f; } }
Сообщение отредактировал alec5sei - Понедельник, 12 Марта 2018, 15:35 |
|
| |