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

时间:2017-01-09 21:27:33

标签: javascript three.js

我有一个Threejs项目,在我的动画函数中使用keydown作为我的玩家角色的控件:左右的'a'和'd',上下的'w'和's'。 / 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;


        }
   });

非常感谢一些帮助:)

1 个答案:

答案 0 :(得分:0)

我认为最好像这样移动渲染循环中的逻辑

外部渲染循环:

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