2017-01-09 2 views
0

Итак, этот скрипт должен переключаться между журналами, а не заполнять журнал. Что происходит с первой перезагрузкой, даже при том, что происходит анимация и все. Журнал не меняется, пока вы не стреляете, а затем перезагружаете. Перезагрузка снова будет переключаться между 2 из 4 журналов, даже если 2 пустые (что ожидается, потому что он может переключиться, если есть журнал с патронами).Unity C# - Перезагрузка скрипта не работает правильно

Вот код:

if (Input.GetAxis ("Reload") > 0 && reloading == false && pressedReload == false && runningAutomatic == false && mags[currMag] < magazineSize && animator.GetCurrentAnimatorStateInfo (0).IsName (shootAnim.name) == false) { 
    for (int i = 0; i < mags.Length; i++) { 

     if (mags [i] > 0) { 
      Reload (currMag + 1); 
      animator.SetFloat ("ReloadSpeed", reloadSpeed); 
      animator.Play (reloadAnim.name); 
      pressedReload = true; 
      reloading = true; 
     } 
    } 
} 
reloading = animator.GetCurrentAnimatorStateInfo (0).IsName (reloadAnim.name); 
    if (reloading) 
     pressedReload = false; 

...

+0

Так же, как примечание стороны, Я думаю, что вы забыли «вырваться» из цикла for после идентификации журнала, который вы можете перезагрузить - в его текущем состоянии он будет выполнять условный код для каждого непустого журнала, даже если один уже выбран для перезагрузки. – Serlite

+1

ха-ха спасибо, что исправил его. Я как-то забыл, что цикл for воспроизводится полностью в одном кадре: P –

ответ

0

Просто забыл break; для цикла ... Спасибо Serlite: D

Смежные вопросы