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
0
Dla cooldowna napisz Coroutine, czyli metodę typu IEnumerator, która wykonuje się z przerwami zdefiniowanymi przez Ciebie.
- Na początku tej metody blokujesz swojego Toggle:
interactable = false;
- Uaktywniasz ten OP efekt, o którym pisałeś.
- Czekasz na dezaktywację tego efektu (bo chyba nie chcesz, żeby trwał tyle, co zwiększony cooldown):
yield return new WaitForSeconds(effectDuration);
. - Dezaktywujesz efekt.
- Teraz czekasz na cooldown:
yield return new WaitForSeconds(cooldownTime);
. - Zwiększasz następny cooldown instrukcją
cooldownTime *= 2.0f;
- 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 ;)