我在画布上有一艘宇宙飞船。它有速度,ship.vx
并且ship.vy
。当它距离画布边界 30 像素时,我设置ship.vx
&ship.vy
并0
沿船的相反方向移动背景对象。此刻,船被卡在了一个点上。这都很好。现在,如果我尝试将它向左向右(stuck at top/bottom
)或自上而下(stuck at left/right
)移动,它不会因为它卡在vx
&vy
设置为的点0
。
如果我朝相反的方向加速,则需要 5 秒才能选择它的速度(大约 2),所以它基本上在同一点持续 5 秒。
我试图不设置vy
为何0
时超出 x 轴,反之亦然,但船在另一个轴上保持缓慢移动。
所以我想要实现的是船在距离边界 30 px 时会卡住,但如果我尝试在其他 3 个方向上移动或加速,它会假装它没有卡住。
你们中有人知道任何机制吗?
谢谢。
function stuckShip(){
if(
(ship.x - ship.width < 0) ||
(ship.x + ship.width > w) ||
(ship.y + ship.height > h) ||
(ship.y - ship.height < 0))
{
ship.vx = 0;
ship.vy = 0;
}
}
function againAndAgain(){
var angle = ship.rotation;
var x = Math.cos(angle);
var y = Math.sin(angle);
var ax = x*thrust,
ay = y*thrust;
ship.vx += ax;
ship.vy += ay;
stuckShip();
ship.draw(context);
}
document.addEventListener('keydown', function(e){
switch(e.keyCode){
case 38:
thrust = 0.35;
break;
case 37:
ship.rotation -= 3;
break;
case 39:
ship.rotation += 3;
break;
}
}