当我想要跳跃时,我正在开发 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);
}
}
链接到我的游戏
最佳答案
一种选择是创建一个持久 bool 变量,例如 justJumped
,并且仅在 justJumped
为 false
时才跳转。跳跃时,将 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/