我在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)正在播放“加载”动画,那就是:
然后按键切换到另一个武器(2):
再次切换到武器(1),武器不再正常了:
请告诉我我能用它做什么。
如果我在拍摄或跑步时切换,一切都很好。
答案 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)