【问题标题】:Unity C# - Reloading Script not working correctlyUnity C# - 重新加载脚本无法正常工作
【发布时间】:2017-05-23 05:23:51
【问题描述】:

所以这个脚本应该在杂志之间切换,而不是填满杂志。发生的事情是第一次重新加载,即使动画发生了一切。直到您射击然后重新加载后,弹匣才会改变。重新装弹将在 4 个弹匣中的 2 个弹匣之间切换,即使 2 个弹匣是空的(这是意料之中的,因为如果弹匣中有子弹,它可以切换)。

代码如下:

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;

...

void Reload (int currentMagazine) {

    if (currentMagazine == mags.Length)
    currentMagazine = 0;
    currMag = currentMagazine;
}

【问题讨论】:

  • 顺便说一句,我认为您在确定可以重新加载的杂志后忘记在 for 循环中使用 break - 在当前状态下,它将执行条件代码对于每一个非空杂志,即使已经选择了一个重新加载。
  • 哈哈谢谢,解决了。我不知何故忘记了 for 循环在一帧中完全播放:P

标签: c# unity3d reload gun


【解决方案1】:

只是忘了break; for 循环...感谢Serlite:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多