在加载项目符号时切换武器时出错

时间:2017-07-13 10:34:35

标签: c# unity3d

我在Unity中有一个玩家的枪支。我尝试使用数字键(1,2,... 9)在它们之间切换。这就是我正在做的事情:

nextWeapon = GetNumberInput();
if (nextWeapon >= 0 && nextWeapon < weapons.Length)
{
    // i want to do something here to reset the current weapon before Active nextWeapon 
    // (e.x: current weapon is still loading, it needs to be stop loading and be NORMAL)

    weapons[currWeapon].SetActive(false);
    weapons[nextWeapon].SetActive(true);
    currWeapon = nextWeapon;
}

但如果我现在的武器(1)正在播放“加载”动画,那就是:

loading weapon (1) and press number key to switch to weapon (2)

然后按键切换到另一个武器(2):

here is weapon (2)

再次切换到武器(1),武器不再正常了:

what i get when i switch to weapon (1) again

请告诉我我能用它做什么。

如果我在拍摄或跑步时切换,一切都很好。

3 个答案:

答案 0 :(得分:2)

当你再次更换武器时,看起来你的动画师搞砸了。每次切换武器时都可以重置动画师。像这样:

定义&#34; WeaponChanged&#34;作为触发器。

链接:AnyState - &gt;空闲(或者在你的动画师中调用它)当&#34; WeaponChanged&#34;被触发

在代码中,无论何时切换武器:

nextWeapon = GetNumberInput();
if (nextWeapon >= 0 && nextWeapon < weapons.Length)
{
    weapons[currWeapon].SetActive(false);
    weapons[nextWeapon].SetActive(true);
    currWeapon = nextWeapon;
    currWeapon.GetComponent<Animator>().SetTrigger("WeaponChanged");
}

我希望这样的事可以解决你的问题。

答案 1 :(得分:1)

你应该为武器创建一个部署动画,每当你切换你的武器时它就会发挥作用,这样它会重置你的动画师加上它会使游戏变得更有趣。 Max Play的代码和动画结构适用于此。

答案 2 :(得分:1)

问题是这些动画(状态)改变了枪的默认结构。事实证明,我所要做的就是在所有动画的write default中取消选中Inspectorenter image description here