jeśli wartość jest równa jakiś czas to.... 4340 6

O temacie

Autor Nekron197

Zaczęty 12.07.2013 roku

Wyświetleń 4340

Odpowiedzi 6

Nekron197

Nekron197

Użytkownicy
posty192
Propsy13
  • Użytkownicy
Siemanko. Znów wtrącam się z być może banalnym pytaniem.
Chodzi oto, że nie mam pojęcia jak powinienem ustawić warunek tak, że np:
if(curAmmo == 0) // przez jakiś czas, dajmy na to 3 sekundy
//to
{
curAmmo = 15;
}
Jakim sposobem powinienem zapisać ten warunek?
 

MrSzymon345

MrSzymon345

Użytkownicy
posty127
Propsy16
Profesjabrak
  • Użytkownicy
Chodzi ci o to ze zmienna jest rowna 0 przez trzy sekundy?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

jeśli wartość jest równa jakiś czas to....
#2 2013-07-12, 11:04(Ostatnia zmiana: 2013-07-12, 11:07)
Musisz zrobić jakiś licznik (za pomocą pętli while) i gdy minie przykładowo 3 s wykonać to, co chcesz.

Podobny problem: http://themodders.org/index.php?/topic/18088-c-problem/

Nekron197

Nekron197

Użytkownicy
posty192
Propsy13
  • Użytkownicy
Bo chodzi mi o tzw. Reload broni, że jeśli w magazynku skończą się naboje, to wykonywana jest animacja reload, i po zakończeniu tej animacji dodaje się spowrotem ta amunicja.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Adanos, Unity działa inaczej, absolutnie nie chodzi o pętlę while ;p  Cały silnik czekałby z renderowaniem następnej klatki aż się ona skończy, zły pomysł. Takie rzeczy powinno robić się w pętli Update, za każdym razem zwiększając licznik czasu o ilość czasu jaka minęła od ostatniego wywołania tej pętli.
float timePassed = 0.0;

void Update ()
{
    timePassed += Time.deltaTime;
    if (timePassed >= 3.0 && curAmmo == 0)
    {
        timePassed = 0.0;
        curAmmo = 15;
    }
}
Ten kod będzie co trzy sekundy ustawiał curAmmo na 15 pod warunkiem że było zerowe i minęły conajmniej trzy sekundy od ostatniego razu. Ciągle nie rozumiem dokładnie co chcesz osiągnąć, napisz to bardziej matematycznie to pokażę ci jak ma wyglądać odpowiedni warunek.

Sculler

Sculler

Użytkownicy
posty339
Propsy273
ProfesjaProducent
  • Użytkownicy

Jakim sposobem powinienem zapisać ten warunek?

Tak chyba będzie najłatwiej.
void Update ()
{
            if(curAmmo == 0)
{
StartCoroutine(czekanie());
}
}

IEnumerator czekanie()
{
yield return new WaitForSeconds(3);
curAmmo = 15;

}
 
some things are meant to be



0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry