我有一个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;
}
});
非常感谢一些帮助:)
答案 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;