javascript - 如何使键盘按钮不会在 JavaScript 中收到垃圾邮件。 (拖延时间)

标签 javascript babylonjs

当我想要跳跃时,我正在开发 Babylon.js。我找到了一个网站并复制了它的跳转代码,并且完美运行!但我想做一款真正的游戏,我不希望人们乱按空格键就飞起来。我怎样才能让它有几秒钟的延迟,这样就没有人可以继续发送空格键并继续飞行?

function jump(){
  camera.cameraDirection.y = 2;
}

document.body.onkeyup = function(e){
  if(e.keyCode == 32){
    //your code
    console.log("jump");
    setTimeout(jump(), 1000); 

  }
}

链接到我的游戏

https://playground.babylonjs.com/#JCE1G3

最佳答案

一种选择是创建一个持久 bool 变量,例如 justJumped,并且仅在 justJumpedfalse 时才跳转。跳跃时,将 justJumped 设置为 true,并创建一个超时,在跳跃持续时间(看起来不到半秒)后将其重置回 false :

let justJumped = false;
document.body.onkeyup = function(e) {
  if (e.keyCode == 32 && !justJumped) {
    justJumped = true;
    setTimeout(() => justJumped = false, 400)
    console.log("jump");
    jump();
  }
}

另请注意,setTimeout(jump(), 1000);可能没有按照您的想法进行操作 - 它立即调用jump/em>.如果您想在 1000 毫秒后调用 jump 函数,只需传递函数名称本身:

let justJumped = false;
document.body.onkeyup = function(e) {
  if (e.keyCode == 32 && !justJumped) {
    justJumped = true;
    setTimeout(() => justJumped = false, 1400)
    console.log("jump");
    setTimeout(jump, 1000);
  }
}

关于javascript - 如何使键盘按钮不会在 JavaScript 中收到垃圾邮件。 (拖延时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738183/

相关文章:

javascript - 如何在 Javascript 中使用正则表达式提取可选查询参数

javascript - Firefox 中的本地存储

lines - 如何去除 BABYLON Lines 上的光效

javascript - 如何动态获取subMaterial索引?

javascript - 如何设置图像在 react 导航中采用带标题的全尺寸屏幕?

javascript - RegEx 实时反转

javascript - 需要一个并行指令 Controller ,无需创建父 Controller

javascript - 我无法通过应用复杂的着色器来查看网格

javascript - Babylon.js 去除球体的光反射

reactjs - BabylonJS 和 React - 引用错误 : earcut is not defined