我正在创建一个基本的2D格斗游戏,并试图用新的输入系统替换旧的输入系统。因此,旧系统更新将等待按钮,然后在按下按钮时调用适当的功能。运动实际上是最简单的部分,只需装配一个1D Vector,然后抓住浮标即可与运动配合使用,真棒。然而,困难在于按下按键来改变游戏中的事物。例如,我有一个输入“ s”,它应该导致方法Crouch()。此方法会更改动画的运行时间,并将匹配框变短,并告诉攻击也使用较小的匹配框。释放s时将调用Stand()方法,以使一切恢复原样。我将播放器输入对象设置为“调用Unity事件”,这将导致所需的相应方法。问题是,即使将这些事件设置为按下和释放,它们也将被视为切换效果,而不是分别按下和释放触发器。这与我的攻击功能具有相同的作用,因为它迫使动画播放两次,一次按下并释放。是否有针对此的修复程序或当前是否有错误?编辑:这里有一些图像需要澄清,代码用于反映与Attack功能相关的所有事件。让我知道是否还需要其他任何东西
public void Attack(){
anim.SetTrigger("attack");
StartCoroutine(wait());
}
IEnumerator wait(){
if(!isCrouched){
yield return new WaitForSeconds(1.3f);
SHitBox.enabled = true;
yield return new WaitForSeconds(.5f);
SHitBox.enabled = false;
}
if(isCrouched){
yield return new WaitForSeconds(1.3f);
CHitBox.enabled = true;
yield return new WaitForSeconds(.5f);
CHitBox.enabled = false;
}
}
答案 0 :(得分:0)
认为我知道了。至少出于此特定线程的目的。答案是这不是我的代码。在新的Unity输入系统中,有一个我要称之为错误的地方。具体来说,有三行代码同时被钩住,这导致对我的方法的三遍调用。该修复程序注释掉了两行代码。这是解决此问题的线程,同时在GitHub帮助页面上找到,这里是链接: https://github.com/Unity-Technologies/InputSystem/issues/959 该问题已被列为接近问题,但对我来说仍然是一个问题,哈哈... 剩下的唯一问题是,选择我要使用的按钮按下类型的行为仍然很时髦。主要是输入仍然只是在不听我想要的输入类型的情况下触发。我基本上只是开始搜索统一代码,以查找这些选择在哪里产生影响。如果在8个小时内没有评论/答案,我会接受我自己的答案,因为从技术上讲,这已经被回答了,只会导致另一个问题。