Threejs,Keydown应该移动我的玩家一定的距离,但距离增加

问题描述:

我有一个Threejs项目,我在其中使用keydown作为我的玩家角色的控件,在我的动画函数中:'a'和'd' ,'w'和's'上下。Threejs,Keydown应该移动我的玩家一定的距离,但距离增加

当我按住其中一个按键时,在按住按键的过程中,我的角色移动的距离会增加。 当我释放钥匙并再次按下之后,我的角色现在继续跳跃增加的距离,并且在某个时候,它只需按一下按钮就跳过整个屏幕。

下面的代码片段:

$(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; 


     } 
    }); 

会很感激一些帮助:)

+0

无法重现发布的代码的问题,但确保代码执行**只有一次**。如果多次执行,每次按键都会调用多个keydown处理程序,结果位置变化超出预期。 – traktor53

+0

您在渲染循环中发布了哪些代码?如果是这样,每次渲染循环触发它将添加**另一个**监听器,导致上述评论中解释的内容。 – 2pha

我认为这是更好地在移动中的逻辑循环渲染这样

外循环渲染:

$(document).keydown(function(e){ 
    if (e.keyCode == 87) { 
     movementY = +0.05; 
    } 
    if (e.keyCode == 83) { 
     movementY = 0.05; 
    } 
    if (e.keyCode == 65) { 
     movementX = -0.05; 
    } 
    if (e.keyCode == 68) { 
     movementX = 0.05; 
    } 
}); 

$(document).keyup(function(e){ 
    movementX = 0; 
    movementY = 0; 
}); 

内部渲染循环:

player.position.x+=movementX; 
player.position.Y+=movementY;