Unity3D输入是否注册多个帧?
我正在Unity中设计一个platformer,并实现了一个功能,其中播放器: 1) 在半空中向下按压,可迅速落在地上 2) 按住时不能跳跃 问题是,第二条规则似乎适用于多个帧——如果我向下轻按,无论是在半空中还是在地面,在那之后的10帧或20帧内我都无法跳跃。我不确定为什么会发生这种情况,因为Update()函数每帧调用一次 下面是Update()代码:Unity3D输入是否注册多个帧?,unity3d,Unity3d,我正在Unity中设计一个platformer,并实现了一个功能,其中播放器: 1) 在半空中向下按压,可迅速落在地上 2) 按住时不能跳跃 问题是,第二条规则似乎适用于多个帧——如果我向下轻按,无论是在半空中还是在地面,在那之后的10帧或20帧内我都无法跳跃。我不确定为什么会发生这种情况,因为Update()函数每帧调用一次 下面是Update()代码: void Update(){ if((接地| | |!双跳转)&&Input.GetButtonDown(“跳转”)&&cannotJump
void Update(){
if((接地| | |!双跳转)&&Input.GetButtonDown(“跳转”)&&cannotJump==false){
跳跃();
}
//快速下降
如果(接地==错误){
if(Input.GetAxis(“垂直”)<0){
刚体2d.AddForce(新向量2(0,-快速下降));
}
}
//如果保持快速下降,防止跳跃
如果(接地&(Input.GetAxis(“垂直”)<0)){
cannotJump=true;
}
如果(接地&(Input.GetAxis(“垂直”)>=0)){
cannotJump=false;
}
}
游戏可以在这里进行:
如果您有任何帮助,我们将不胜感激。与其对您是否可以跳转进行两次单独的检查,不如尝试将其分配给您真正想知道的内容。移除最后两个if分支,并尝试将其放置到位:
cannotJump = Input.GetAxis("Vertical") < 0;
cannotJump=Input.GetAxis(“垂直”)<0;
因为你唯一不允许跳跃的时候是当球员压着的时候。“搁浅”检查在这里基本上是无关紧要的,我认为这才是真正伤害你的地方。我发现这个问题与数字轴的重力有关。当按钮(与操纵杆等模拟源相反)映射到轴时,重力决定释放按钮后轴恢复到空档(0)位置的速度 我设置的默认重力是3;即使在我松开向下按钮后,垂直轴也需要很长时间才能返回到0,因此游戏阻止了我跳跃。我只需将数字轴重力更改为1000,就解决了这个问题
注意:这是使用资产存储中重新布线的输入管理器实现的,但我认为这也适用于Unity自己的输入管理器。谢谢您的提示。我使用了你的代码,但它并没有完全解决问题,但它让我四处闲逛,我发现了问题所在。
cannotJump = Input.GetAxis("Vertical") < 0;