【发布时间】: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