网上找了个解决方案,效果不太好
document.onkeydown=function (e){
console.log(e.key);
switch (e.key){
case "ArrowLeft":
dx-=5;
break;
case "ArrowRight":
dx+=5;
break;
case "ArrowUp":
dy-=5;
break;
case "ArrowDown":
dy+=5;
break;
}
}
document.onkeyup=function (e){
console.log(e.key);
switch (e.key){
case "ArrowLeft":
dx=0;
break;
case "ArrowRight":
dx=0;
break;
case "ArrowUp":
dy=0;
break;
case "ArrowDown":
dy=0;
break;
}
}
window.setInterval(()=>{
// ...
},100);
1
LifStge 2021-07-30 22:22:20 +08:00
比如换个思路 上下左右不变 再加几个其他按键呢 UI 说明一下就行了 再比如小键盘的九宫格按键
|
2
gouflv 2021-07-30 22:50:13 +08:00 via iPhone
监听方式没问题,应该去了解下向量,模拟加速度和合力
|
3
joshua7v 2021-07-31 14:18:14 +08:00 via iPhone
你这样对角线速度会快
同楼上,你需要了解向量 |
4
codehz 2021-07-31 15:13:37 +08:00
(建议换个模型
你看你可以知道什么时候按下,什么时候释放对吧 所以可以做个对象记录方向键的按下状态,然后再根据这个对象的状态计算加速方向 两层抽象之后这个问题就很简单了 |
5
ShaunSS 2021-07-31 19:41:31 +08:00
监听没问题,像素要做下归一不然斜向会动的很快
|