【发布时间】:2017-01-09 21:27:32
【问题描述】:
我有一个 Threejs 项目,我在我的动画功能中使用 keydown 作为我的玩家角色的控件:'a' 和 'd' 用于左右,'w' 和 's' 用于上下。
当我按住其中一个键时,我的角色移动的距离会随着我按住键的持续时间而增加。 在我松开按键并再次按下后,我的角色现在不断跳跃增加的距离,并且在某些时候它只需按下一个按钮就可以跳过整个屏幕。
这是一个代码sn-p:
$(document).keydown(function(e){
if (e.keyCode == 87) {
player.position.y += 0.05;
}
if (e.keyCode == 83) {
player.position.y -= 0.05;
}
if (e.keyCode == 65) {
player.position.x -= 0.05;
}
if (e.keyCode == 68) {
player.position.x += 0.05;
}
});
非常感谢一些帮助:)
【问题讨论】:
-
无法重现发布代码的问题,但请确保代码只执行一次。如果多次执行,每次按键都会调用多个 keydown 处理程序,结果位置的变化会超出预期。
-
您在渲染循环中发布的代码是?如果是这样,每次您的渲染循环触发时,它都会添加 另一个 侦听器,从而导致上述评论中解释的内容。
标签: javascript three.js