Unity cool down metody

0

Hej. Tworzę moją pierwszą grę i została mi ostatnia rzecz do zrobienia. Mam sklep, w którym można kupić sporo przedmiotów. Jeden z nich daje to, że przeszkody się nie pojawiają ale to było OP. Więc postanowiłem, że zrobie buttona który po nacisnięciu będzie robił ww. efekt przez 10 sekund i żeby przed kolejnym użyciem miał cool down 20s. Próbowałem znanych mi metod ale w tym przypadku nie zadziałały. Chcę tylko żeby po naciśnięciu na przycisk boolean sie zmienial na true i po 10 sekundach na false, i żeby przed ponowną możliwością naciśnięcia był cool down 20s. Jakieś pomysły?

0

Dla cooldowna napisz Coroutine, czyli metodę typu IEnumerator, która wykonuje się z przerwami zdefiniowanymi przez Ciebie.

  1. Na początku tej metody blokujesz swojego Toggle: interactable = false;
  2. Uaktywniasz ten OP efekt, o którym pisałeś.
  3. Czekasz na dezaktywację tego efektu (bo chyba nie chcesz, żeby trwał tyle, co zwiększony cooldown): yield return new WaitForSeconds(effectDuration);.
  4. Dezaktywujesz efekt.
  5. Teraz czekasz na cooldown: yield return new WaitForSeconds(cooldownTime);.
  6. Zwiększasz następny cooldown instrukcją cooldownTime *= 2.0f;
  7. Odblokowujesz Toggle, żeby można było następny raz użyć: interactable = true;

Coroutine odpalasz w swoim MonoBehaviour poleceniem StartCoroutine(Efekt());.
Ten button nie musi być typu Toggle, możesz to samo osiągnąć na zwykłym Button'ie, ale sam napisałeś, że jest to akcja typu boolean ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1