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;
}
});
会很感激一些帮助:)
答
我认为这是更好地在移动中的逻辑循环渲染这样
外循环渲染:
$(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;
无法重现发布的代码的问题,但确保代码执行**只有一次**。如果多次执行,每次按键都会调用多个keydown处理程序,结果位置变化超出预期。 – traktor53
您在渲染循环中发布了哪些代码?如果是这样,每次渲染循环触发它将添加**另一个**监听器,导致上述评论中解释的内容。 – 2pha